123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*=============================================================================
- Copyright (c) 2001-2011 Joel de Guzman
- Distributed under 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(BOOST_FUSION_TAG_OF_09262006_1900)
- #define BOOST_FUSION_TAG_OF_09262006_1900
- #include <boost/fusion/support/config.hpp>
- #include <boost/fusion/support/tag_of_fwd.hpp>
- namespace boost { namespace tuples
- {
- struct null_type;
-
- template <
- class T0, class T1, class T2, class T3, class T4,
- class T5, class T6, class T7, class T8, class T9
- >
- class tuple;
- template <class Head, class Tail>
- struct cons;
- }}
-
- namespace boost { namespace fusion
- {
- struct boost_tuple_tag;
- struct fusion_sequence_tag;
- namespace traits
- {
- template <
- class T0, class T1, class T2, class T3, class T4,
- class T5, class T6, class T7, class T8, class T9
- >
- #if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>, void >
- #else
- struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
- #endif
- {
- typedef boost_tuple_tag type;
- };
- template <class Head, class Tail>
- #if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- struct tag_of<tuples::cons<Head, Tail>, void >
- #else
- struct tag_of<tuples::cons<Head, Tail> >
- #endif
- {
- typedef boost_tuple_tag type;
- };
- template <>
- struct tag_of<tuples::null_type>
- {
- typedef boost_tuple_tag type;
- };
- }
- }}
- namespace boost { namespace mpl
- {
- template<typename>
- struct sequence_tag;
- template <
- class T0, class T1, class T2, class T3, class T4,
- class T5, class T6, class T7, class T8, class T9
- >
- struct sequence_tag<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
- {
- typedef fusion::fusion_sequence_tag type;
- };
- template <
- class T0, class T1, class T2, class T3, class T4,
- class T5, class T6, class T7, class T8, class T9
- >
- struct sequence_tag<
- tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> const
- >
- {
- typedef fusion::fusion_sequence_tag type;
- };
- template <class Head, class Tail>
- struct sequence_tag<tuples::cons<Head, Tail> >
- {
- typedef fusion::fusion_sequence_tag type;
- };
- template <class Head, class Tail>
- struct sequence_tag<tuples::cons<Head, Tail> const>
- {
- typedef fusion::fusion_sequence_tag type;
- };
- template <>
- struct sequence_tag<tuples::null_type>
- {
- typedef fusion::fusion_sequence_tag type;
- };
- template <>
- struct sequence_tag<tuples::null_type const>
- {
- typedef fusion::fusion_sequence_tag type;
- };
- }}
- #endif
|