1 /*============================================================================= 2 Copyright (c) 2001-2011 Joel de Guzman 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(BOOST_FUSION_END_IMPL_09272006_0721) 8 #define BOOST_FUSION_END_IMPL_09272006_0721 9 10 #include <boost/fusion/support/config.hpp> 11 #include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp> 12 #include <boost/mpl/if.hpp> 13 #include <boost/type_traits/is_const.hpp> 14 15 namespace boost { namespace tuples 16 { 17 struct null_type; 18 }} 19 20 namespace boost { namespace fusion 21 { 22 struct boost_tuple_tag; 23 24 namespace extension 25 { 26 template <typename Tag> 27 struct end_impl; 28 29 template <> 30 struct end_impl<boost_tuple_tag> 31 { size_from_real_kind(int kind)32 template <typename Sequence> 33 struct apply 34 { 35 typedef 36 boost_tuple_iterator< 37 typename mpl::if_< 38 is_const<Sequence> 39 , tuples::null_type const 40 , tuples::null_type 41 >::type 42 > 43 type; 44 45 BOOST_FUSION_GPU_ENABLED 46 static type 47 call(Sequence& seq) 48 { 49 return type(seq); 50 } 51 }; 52 }; 53 } 54 }} 55 56 #endif 57