Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:34:43

0001 /*=============================================================================
0002     Copyright (c) 2006 Eric Niebler
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007 #if !defined(FUSION_IS_SEGMENTED_03202006_0015)
0008 #define FUSION_IS_SEGMENTED_03202006_0015
0009 
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/mpl/bool.hpp>
0012 #include <boost/fusion/support/tag_of.hpp>
0013 
0014 namespace boost { namespace fusion 
0015 {
0016     // Special tags:
0017     struct sequence_facade_tag;
0018     struct iterator_range_tag;
0019 
0020     namespace extension
0021     {
0022         template <typename Tag>
0023         struct is_segmented_impl
0024         {
0025             template <typename Sequence>
0026             struct apply
0027               : mpl::false_
0028             {};
0029         };
0030 
0031         template <>
0032         struct is_segmented_impl<sequence_facade_tag>
0033         {
0034             template <typename Sequence>
0035             struct apply : Sequence::is_segmented {};
0036         };
0037 
0038         template <>
0039         struct is_segmented_impl<iterator_range_tag>;
0040     }
0041 
0042     namespace traits
0043     {
0044         template <typename Sequence>
0045         struct is_segmented
0046           : mpl::bool_<
0047                 (bool)extension::is_segmented_impl<typename traits::tag_of<Sequence>::type>::
0048                     template apply<Sequence>::type::value
0049             >
0050         {
0051         };
0052     }
0053 }}
0054 
0055 #endif