Chris@16: Chris@16: // Copyright Aleksey Gurtovoy 2001-2004 Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: // Preprocessed version of "boost/mpl/inherit.hpp" header Chris@16: // -- DO NOT modify by hand! Chris@16: Chris@16: namespace boost { namespace mpl { Chris@16: Chris@16: template< Chris@16: typename BOOST_MPL_AUX_NA_PARAM(T1) Chris@16: , typename BOOST_MPL_AUX_NA_PARAM(T2) Chris@16: > Chris@16: struct inherit2 Chris@16: : T1, T2 Chris@16: { Chris@16: typedef inherit2 type; Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2)) Chris@16: }; Chris@16: Chris@16: template< typename T1 > Chris@16: struct inherit2< T1,empty_base > Chris@16: { Chris@16: typedef T1 type; Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base)) Chris@16: }; Chris@16: Chris@16: template< typename T2 > Chris@16: struct inherit2< empty_base,T2 > Chris@16: { Chris@16: typedef T2 type; Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2)) Chris@16: }; Chris@16: Chris@16: template<> Chris@16: struct inherit2< empty_base,empty_base > Chris@16: { Chris@16: typedef empty_base type; Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base)) Chris@16: }; Chris@16: Chris@16: BOOST_MPL_AUX_NA_SPEC(2, inherit2) Chris@16: Chris@16: template< Chris@16: typename T1 = na, typename T2 = na, typename T3 = na Chris@16: > Chris@16: struct inherit3 Chris@16: : inherit2< Chris@16: typename inherit2< Chris@16: T1, T2 Chris@16: >::type Chris@16: , T3 Chris@16: > Chris@16: { Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT( Chris@16: 3 Chris@16: , inherit3 Chris@16: , ( T1, T2, T3) Chris@16: ) Chris@16: }; Chris@16: Chris@16: BOOST_MPL_AUX_NA_SPEC(3, inherit3) Chris@16: Chris@16: template< Chris@16: typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na Chris@16: > Chris@16: struct inherit4 Chris@16: : inherit2< Chris@16: typename inherit3< Chris@16: T1, T2, T3 Chris@16: >::type Chris@16: , T4 Chris@16: > Chris@16: { Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT( Chris@16: 4 Chris@16: , inherit4 Chris@16: , ( T1, T2, T3, T4) Chris@16: ) Chris@16: }; Chris@16: Chris@16: BOOST_MPL_AUX_NA_SPEC(4, inherit4) Chris@16: Chris@16: template< Chris@16: typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na Chris@16: , typename T5 = na Chris@16: > Chris@16: struct inherit5 Chris@16: : inherit2< Chris@16: typename inherit4< Chris@16: T1, T2, T3, T4 Chris@16: >::type Chris@16: , T5 Chris@16: > Chris@16: { Chris@16: BOOST_MPL_AUX_LAMBDA_SUPPORT( Chris@16: 5 Chris@16: , inherit5 Chris@16: , ( T1, T2, T3, T4, T5) Chris@16: ) Chris@16: }; Chris@16: Chris@16: BOOST_MPL_AUX_NA_SPEC(5, inherit5) Chris@16: Chris@16: /// primary template Chris@16: Chris@16: template< Chris@16: typename T1 = empty_base, typename T2 = empty_base Chris@16: , typename T3 = empty_base, typename T4 = empty_base Chris@16: , typename T5 = empty_base Chris@16: > Chris@16: struct inherit Chris@16: : inherit5< T1,T2,T3,T4,T5 > Chris@16: { Chris@16: }; Chris@16: Chris@16: template<> Chris@16: struct inherit< na,na,na,na,na > Chris@16: { Chris@16: template< Chris@16: Chris@16: typename T1 = empty_base, typename T2 = empty_base Chris@16: , typename T3 = empty_base, typename T4 = empty_base Chris@16: , typename T5 = empty_base Chris@16: Chris@16: > Chris@16: struct apply Chris@16: : inherit< T1,T2,T3,T4,T5 > Chris@16: { Chris@16: }; Chris@16: }; Chris@16: Chris@16: BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit) Chris@16: BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit) Chris@16: BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit) Chris@16: }} Chris@16: