Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:35:00

0001 /*=============================================================================
0002     Copyright (c) 2022 Denis Mikhailov
0003     Distributed under the Boost Software License, Version 1.0. (See accompanying
0004     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0005 ==============================================================================*/
0006 
0007 #if !defined(BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM)
0008 #define BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM
0009 
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/iterator/deref.hpp>
0012 #include <boost/type_traits/remove_reference.hpp>
0013 #include <boost/type_traits/remove_const.hpp>
0014 #include <boost/utility/result_of.hpp>
0015 
0016 namespace boost { namespace fusion
0017 {
0018     struct transform_view_iterator_tag;
0019     struct transform_view_iterator2_tag;
0020 
0021     namespace extension
0022     {
0023         template<typename Tag>
0024         struct key_of_impl;
0025 
0026         // Unary Version
0027         template<>
0028         struct key_of_impl<transform_view_iterator_tag>
0029         {
0030             template <typename Iterator>
0031             struct apply
0032             {
0033                 typedef typename
0034                     result_of::deref<typename Iterator::first_type>::type
0035                 value_type;
0036 
0037                 typedef typename Iterator::transform_type F;
0038                 typedef typename boost::result_of<F(value_type)>::type transformed_type;
0039                 typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
0040                 typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
0041 
0042                 typedef typename transformed_type_unconst::first_type type;
0043             };
0044         };
0045 
0046         // Binary Version is not supported with Associative Sequence
0047     }
0048 }}
0049 #endif