1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
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_TAG_OF_09262006_1900)
8 #define BOOST_FUSION_TAG_OF_09262006_1900
10 #include <boost/fusion/support/config.hpp>
11 #include <boost/fusion/support/tag_of_fwd.hpp>
13 namespace boost { namespace tuples
18 class T0, class T1, class T2, class T3, class T4,
19 class T5, class T6, class T7, class T8, class T9
23 template <class Head, class Tail>
27 namespace boost { namespace fusion
29 struct boost_tuple_tag;
30 struct fusion_sequence_tag;
35 class T0, class T1, class T2, class T3, class T4,
36 class T5, class T6, class T7, class T8, class T9
38 #if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
39 struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>, void >
41 struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
44 typedef boost_tuple_tag type;
47 template <class Head, class Tail>
48 #if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
49 struct tag_of<tuples::cons<Head, Tail>, void >
51 struct tag_of<tuples::cons<Head, Tail> >
54 typedef boost_tuple_tag type;
58 struct tag_of<tuples::null_type>
60 typedef boost_tuple_tag type;
65 namespace boost { namespace mpl
71 class T0, class T1, class T2, class T3, class T4,
72 class T5, class T6, class T7, class T8, class T9
74 struct sequence_tag<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
76 typedef fusion::fusion_sequence_tag type;
80 class T0, class T1, class T2, class T3, class T4,
81 class T5, class T6, class T7, class T8, class T9
84 tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> const
87 typedef fusion::fusion_sequence_tag type;
90 template <class Head, class Tail>
91 struct sequence_tag<tuples::cons<Head, Tail> >
93 typedef fusion::fusion_sequence_tag type;
96 template <class Head, class Tail>
97 struct sequence_tag<tuples::cons<Head, Tail> const>
99 typedef fusion::fusion_sequence_tag type;
103 struct sequence_tag<tuples::null_type>
105 typedef fusion::fusion_sequence_tag type;
109 struct sequence_tag<tuples::null_type const>
111 typedef fusion::fusion_sequence_tag type;