1 /*============================================================================= 2 Copyright (c) 2006 Eric Niebler 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 #if !defined(FUSION_IS_SEGMENTED_03202006_0015) 8 #define FUSION_IS_SEGMENTED_03202006_0015 9 10 #include <boost/fusion/support/tag_of.hpp> 11 12 namespace boost { namespace fusion 13 { 14 // Special tags: 15 struct sequence_facade_tag; 16 struct boost_tuple_tag; // boost::tuples::tuple tag 17 struct boost_array_tag; // boost::array tag 18 struct mpl_sequence_tag; // mpl sequence tag 19 struct std_pair_tag; // std::pair tag 20 struct iterator_range_tag; 21 22 namespace extension 23 { 24 template<typename Tag> 25 struct is_segmented_impl 26 { 27 template<typename Sequence> 28 struct apply 29 : mpl::false_ 30 {}; 31 }; 32 33 template<> 34 struct is_segmented_impl<iterator_range_tag>; 35 } 36 37 namespace traits 38 { 39 template <typename Sequence> 40 struct is_segmented 41 : extension::is_segmented_impl<typename traits::tag_of<Sequence>::type>:: 42 template apply<Sequence> 43 { 44 }; 45 } 46 }} 47 48 #endif 49