1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include<boost/preprocessor.hpp>
template<class T1>
struct my_base1{};
template<class T1, typename T2>
struct my_base2{};
template<class T1, typename T2,typename T3>
struct my_base3{};
// mon code
#define MACRO( derived, card, base ) \
struct derived : BOOST_PP_TUPLE_REM(card) base
template< typename T1>
MACRO( my_derived1, 1,(my_base1< T1 >) )
{};
template< typename T1, typename T2 >
MACRO( my_derived2, 2,(my_base2< T1, T2 >) )
{};
template< typename T1, typename T2 ,typename T3>
MACRO( my_derived3, 3,(my_base3< T1, T2, T3 >) )
{};
int main()
{
my_derived1<int> m1;
my_derived2<int,int> m2;
my_derived3<int,int,int> m3;
return 0;
} |