1 /*============================================================================= 2 Copyright (c) 2009 Christopher Schmidt 3 4 Distributed under the Boost Software License, Version 1.0. (See accompanying 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 ==============================================================================*/ 7 8 #ifndef BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP 9 #define BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/fusion/support/tag_of.hpp> 13 14 namespace boost { namespace fusion 15 { 16 struct iterator_facade_tag; 17 18 namespace extension 19 { 20 template <typename> 21 struct value_of_data_impl; 22 23 template <> 24 struct value_of_data_impl<iterator_facade_tag> 25 { 26 template <typename It> 27 struct apply 28 : It::template value_of_data<It> 29 {}; 30 }; 31 } 32 33 namespace result_of 34 { 35 template <typename It> 36 struct value_of_data 37 : extension::value_of_data_impl<typename traits::tag_of<It>::type>:: 38 template apply<It> 39 {}; 40 } 41 }} 42 43 #endif 44