/*============================================================================= Copyright (c) 2001-2003 Joel de Guzman Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_SEQUENCE_DETAIL_TUPLE10_HPP) #define FUSION_SEQUENCE_DETAIL_TUPLE10_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) # include #endif namespace boost { namespace fusion { namespace detail { struct disambiguate_as_tuple {}; struct disambiguate_as_data {}; struct disambiguate_as_iterator {}; template struct disambiguate { typedef typename mpl::if_< is_convertible , disambiguate_as_data , typename mpl::if_< is_base_and_derived , disambiguate_as_tuple , disambiguate_as_iterator >::type >::type type; static type call() { FUSION_RETURN_DEFAULT_CONSTRUCTED; } }; template struct tuple_access; template <> struct tuple_access<0> { template static typename tuple_access_result::type get(Tuple& t) { FUSION_RETURN_TUPLE_MEMBER(0); } }; template <> struct tuple_access<1> { template static typename tuple_access_result::type get(Tuple& t) { FUSION_RETURN_TUPLE_MEMBER(1); } }; template <> struct tuple_access<2> { template static typename tuple_access_result::type get(Tuple& t) { FUSION_RETURN_TUPLE_MEMBER(2); } }; }}} // namespace boost::fusion::detail /////////////////////////////////////////////////////////////////////////////// // // Bring in the rest of the fixed-tuples using the pre-processor. Generate // expansions for the tuple_access and tupleN+1 classes for N = 3..10. // /////////////////////////////////////////////////////////////////////////////// #include namespace boost { namespace fusion { namespace detail { BOOST_PP_REPEAT_FROM_TO(3, 10, FUSION_TUPLE_N_ACCESS, _) } struct tuple_tag; # define BOOST_PP_ITERATION_PARAMS_1 (3, (4, 10, )) # include BOOST_PP_ITERATE() }} #endif