Chris@16
|
1
|
Chris@16
|
2 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
|
Chris@16
|
3
|
Chris@16
|
4 #if defined(BOOST_PP_IS_ITERATING)
|
Chris@16
|
5
|
Chris@16
|
6 // Copyright Aleksey Gurtovoy 2000-2004
|
Chris@16
|
7 //
|
Chris@16
|
8 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
9 // (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
10 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
11 //
|
Chris@16
|
12 // See http://www.boost.org/libs/mpl for documentation.
|
Chris@16
|
13
|
Chris@101
|
14 // $Id$
|
Chris@101
|
15 // $Date$
|
Chris@101
|
16 // $Revision$
|
Chris@16
|
17
|
Chris@16
|
18 #include <boost/preprocessor/repetition/enum_params.hpp>
|
Chris@16
|
19 #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
|
Chris@16
|
20 #include <boost/preprocessor/dec.hpp>
|
Chris@16
|
21 #include <boost/preprocessor/cat.hpp>
|
Chris@16
|
22
|
Chris@16
|
23 #define i_ BOOST_PP_FRAME_ITERATION(1)
|
Chris@16
|
24
|
Chris@16
|
25 # define AUX778076_SET_C_TAIL(set, i_, T, C) \
|
Chris@16
|
26 BOOST_PP_CAT(BOOST_PP_CAT(set,i_),_c)< \
|
Chris@16
|
27 T BOOST_PP_ENUM_TRAILING_PARAMS(i_, C) \
|
Chris@16
|
28 > \
|
Chris@16
|
29 /**/
|
Chris@16
|
30
|
Chris@16
|
31 template<
|
Chris@16
|
32 typename T
|
Chris@16
|
33 , BOOST_PP_ENUM_PARAMS(i_, T C)
|
Chris@16
|
34 >
|
Chris@16
|
35 struct BOOST_PP_CAT(BOOST_PP_CAT(set,i_),_c)
|
Chris@16
|
36 : s_item<
|
Chris@16
|
37 integral_c<T,BOOST_PP_CAT(C,BOOST_PP_DEC(i_))>
|
Chris@16
|
38 , AUX778076_SET_C_TAIL(set,BOOST_PP_DEC(i_), T, C)
|
Chris@16
|
39 >
|
Chris@16
|
40 {
|
Chris@16
|
41 typedef BOOST_PP_CAT(BOOST_PP_CAT(set,i_),_c) type;
|
Chris@16
|
42 };
|
Chris@16
|
43
|
Chris@16
|
44 # undef AUX778076_SET_C_TAIL
|
Chris@16
|
45
|
Chris@16
|
46 #undef i_
|
Chris@16
|
47
|
Chris@16
|
48 #endif // BOOST_PP_IS_ITERATING
|