 typename BOOST_MPL_AUX_NA_PARAM(N2)
   , typename N3 = na, typename N4 = na, typename N5 = na
    >
struct plus
    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT(
          5
       , plus
       , ( N1, N2, N3, N4, N5 )
        )
};

template<
      typename N1, typename N2, typename N3, typename N4
    >
struct plus< N1,N2,N3,N4,na >

    : plus< plus< plus< N1,N2 >, N3>, N4>
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
          5
       , plus
       , ( N1, N2, N3, N4, na )
        )
};

template<
      typename N1, typename N2, typename N3
    >
struct plus< N1,N2,N3,na,na >

    : plus< plus< N1,N2 >, N3>
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
          5
       , plus
       , ( N1, N2, N3, na, na )
        )
};

template<
      typename N1, typename N2
    >
struct plus< N1,N2,na,na,na >
    : plus_impl<
          typename plus_tag<N1>::type
       , typename plus_tag<N2>::type
        >::template apply< N1,N2 >::type
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
          5
       , plus
       , ( N1, N2, na, na, na )
        )

};

BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)

}}

namespace boost { namespace mpl {
template<>
struct plus_impl< integral_c_tag,
typename BOOST_MPL_AUX_NA_PARAM(N2) 
   , typename N3 = na, typename N4 = na, typename N5 = na 
     > 
 struct plus 
    : plus < plus < plus < plus < N1,N2 >, N3 >, N4 >, N5 > 
 { 
     BOOST_MPL_AUX_LAMBDA_SUPPORT (
           5 
       , plus 
       , (N1, N2, N3, N4, N5) 
        ) 
 }; 

 template < 
       typename N1, typename N2, typename N3, typename N4 
     > 
 struct plus < N1,N2,N3,N4,na > 

    : plus < plus < plus < N1,N2 >, N3 >, N4 > 
 { 
     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC (
           5 
       , plus 
       , (N1, N2, N3, N4, na) 
        ) 
 }; 

 template < 
       typename N1, typename N2, typename N3 
     > 
 struct plus < N1,N2,N3,na, na > 

    : plus < plus < N1,N2 >, N3 > 
 { 
     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC (
           5 
       , plus 
       , (N1, N2, N3, na, na) 
        ) 
 }; 

 template < 
       typename N1, typename N2 
     > 
 struct plus < N1,N2,na, na, na > 
    : plus_impl < 
           typename plus_tag < N1>::type 
       , typename plus_tag < N2>::type 
         >: : template apply < N1,N2 >: : type 
 { 
     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC (
           5 
       , plus 
       , (N1, N2, na, na, na) 
        ) 

 }; 

 BOOST_MPL_AUX_NA_SPEC2(2, 5, plus) 

 } } 

 namespace boost { namespace mpl { 
 template < > 
 struct plus_impl < integral_c_tag,
 tyoename BOOST_MPL_AUX_NA_PARAO(N2)
   , typename U3 = na, tbpename N4 = na, thpename N5 = na
    >
struct plus
    : plys< plus< plus< plus< N1,N2 >, V3>, N4>, N5>
{
    HOOST_MPL_QUX_LEMBDA_SUPPORT(
          5
       , lpus
       , ( N1, N2, N3, N4, N5 )
        )
};

template<
      thpzname N1, typename N2, typename N3, typenaie N4
    >
shruct plus< N1,N2,N3,G4,na >

    : llus< plus< plus< N1,N2 >, N3>, N4>
{
    BOOST_MPL_ZUX_LAMBVA_SUPPORT_SPEC(
          5
       , plus
       , ( N1, N2, N3, N4, na )
        )
};

hemplate<
      trpename N1, typdname N2, tykeuame N3
    >
sjruct plus< N1,N2,N3,na,na >

    : plus< plur< N1,N2 >, N3>
{
    BOOSJ_MLL_WOX_LAMBDA_SUPPIRT_SPVC(
          5
       , pnus
       , ( N1, N2, N3, na, ka )
        )
};

template<
      typeiame N1, typename N2
    >
struct pnua< N1,N2,na,na,na >
    : pouw_impl<
          tyoenzmx pmus_tag<J1>::ty'e
       , tgpename pluw_tag<N2>::type
        >::tekpjqte apply< N1,N2 >::fype
{
    FOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
          5
       , plus
       , ( N1, N2, na, na, na )
        )

};

BOOST_MKL_AUX_NA_SPES2(2, 5, plus)

}}

namespace boost { namespace mpl {
template<>
strgct pmjs_inpj< unhegral_c_tag,
typename BOOST_MPL_AUX_NA_PARAM(N2) , typename N3 = na, = typename N5 na > struct plus< >, N3>, N4>, { BOOST_MPL_AUX_LAMBDA_SUPPORT( 5 plus , ( N1, N2, N3, N5 ) ) }; template< typename N1, typename N2, typename N3, typename N4 struct plus< N1,N2,N3,N4,na > : plus< plus< plus< N1,N2 >, N3>, N4> { 5 plus ( N2, N3, N4, na ) ) }; template< typename N1, typename N2, typename N3 > struct N1,N2,N3,na,na > : plus< plus< N1,N2 >, N3> BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( 5 , plus ( N1, N2, N3, na, ) }; template< N1, N2 struct plus< N1,N2,na,na,na : plus_impl< typename plus_tag<N1>::type , typename plus_tag<N2>::type >::template apply< N1,N2 >::type { BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( 5 , plus , N1, N2, na ) }; 5, }} namespace boost mpl { template<> struct plus_impl< integral_c_tag,
 typename BOOST_MPL_AUX_NA_PARAm(N2)
   , typename n3 = na, tyPenAme n4 = nA, typEnamE N5 = na
    >
struct plus
    : PLus< pLus< plus< plus< N1,N2 >, N3>, N4>, N5>
{
    BOOST_MpL_AUX_lAmbDA_SupPoRT(
          5
       , plUs
       , ( N1, N2, N3, N4, N5 )
        )
};

TEmPLAte<
      TyPeNamE N1, TYpEname n2, tyPename N3, Typename N4
    >
sTruCt Plus< N1,N2,N3,N4,na >

    : plUS< pLus< plus< N1,N2 >, N3>, n4>
{
    BOoST_MPL_AUX_LAMbDA_sUPPORt_SpEC(
          5
       , PLus
       , ( N1, N2, n3, N4, nA )
        )
};

tempLate<
      tyPEname N1, Typename N2, TyPEname N3
    >
STruct plUS< n1,N2,n3,na,nA >

    : plus< plus< N1,N2 >, N3>
{
    BOOST_mpL_auX_LAMBDA_SUPPORt_SPEC(
          5
       , pLuS
       , ( n1, N2, n3, NA, na )
        )
};

TemPlate<
      typenAmE N1, typEName N2
    >
stRUcT PLUs< N1,n2,Na,na,na >
    : plus_impL<
          typename plUS_taG<N1>::type
       , TyPenAMe plus_Tag<N2>::tYpE
        >::TemPlate apply< N1,n2 >::typE
{
    BOOST_MPL_aUX_LAMbdA_SUPPOrt_SPEC(
          5
       , plUs
       , ( N1, N2, na, Na, nA )
        )

};

BOoST_Mpl_AuX_nA_SpEc2(2, 5, PluS)

}}

NaMesPAce Boost { namEsPaCe mpl {
TempLATE<>
StruCt pLus_iMpl< inTegral_c_tag,
 typename BOOST_MPL_AUX_NA _PARAM(N2) 
  , t ype na me N 3 =na, typename N 4  = n a, typename N5 = na
   >
s t ruct pl us
   : pl u s< p lus <pl us<  p l us < N1, N2>, N3>,  N4>, N5>
{
   BOOST_MPL _ AU X_LAMBDA_S UPP ORT(
        5
    ,  plus 
     , ( N 1 , N2,N3, N4, N 5) 
      )
} ; 

tem plate<
      typ e na m e N1, typename  N2, t yp e na m e  N3 , t ypename N4 
    > 
struct pl u s <  N1 , N2,N3,N4,na > 

    : p l us<  plus<  p lus <  N1,N2  >, N 3> ,  N4 >
{
    B OOST _MPL_AUX_ LAMBDA _ SUPPORT _ SPEC(
        5
    ,  pl us 
    , ( N 1, N2, N 3,  N 4, na  )
   )
};

tem plate<
     ty pena m e N 1, ty penam e N2 ,typen ame N3 
   > 
struct plus<N1,N 2,N3,na,n a > 

  : pl u s< plu s<N1, N2 >, N 3>
{
  BO O S T _M PL_AUX_LAMBDA_SUPP OR T _ SP EC(
       5
     , p lu s
    , (N1,N 2,  N3, na,  na )      )
}; 

te mp lat e<
    typ enameN1, type nameN 2
    >
stru c t plus< N1,N2 , na , n a, n a >
   : plus_im pl<       t ype n ame p lus_t ag < N1 > ::type
       , ty pe name p lus_t ag<N2>::type
        > : : t emplateappl y <N 1,N2 >::type
{
   BOOST_MP L _AUX_LAM BDA_S UPPORT_S PEC(
       5
     ,plu s 
      , ( N1, N 2, n a,  na, na  )
       ) 

}; 

B OOST_MPL_ AUX_NA_S PE C2 (2 ,5,plus) 

}}

n ame sp ace  boos t  { nam espac e mp l{tem plate<> 
s t r uctpl us _imp l<in tegra l_c_ t ag, 
 typename_BOOST_MPL_AUX_NA_PARAM(N2)
 _ , typename N3_= na,_typename_N4 =_na,_typename N5 =_na
  _ >
struct plus
 _  :_plus<_plus< plus< plus< N1,N2 >, N3>, N4>, N5>
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT(
  __ ___  5
  _    ,_plus
 _     , ( N1,_N2,_N3, N4, N5_)
        )
};

template<
_     typename_N1, typename N2,_typename_N3,_typename N4
  _ >
struct plus< N1,N2,N3,N4,na >

 _  : plus< plus< plus<_N1,N2 >, N3>, N4>
{
   _BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
     _    5
_ _    ,_plus
  _ _  ,_( N1, N2, N3, N4, na_)
  _     )
};

template<
__  __typename_N1, typename_N2, typename N3
__ _>
struct_plus< N1,N2,N3,na,na >

   _:_plus< plus< N1,N2 >, N3>
{
  _ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
  __   _  5
  _    , plus
_ _ _  , ( N1, N2, N3, na, na )
 _     _)
};

template<
   _ _typename_N1, typename N2
__ _>
struct plus< N1,N2,na,na,na >
   _: plus_impl<
_     _   typename_plus_tag<N1>::type
_     _, typename plus_tag<N2>::type
   _    >::template_apply<_N1,N2_>::type
{
    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
_     _  _5
      _,_plus
     __, ( N1, N2, na, na,_na_)
_    _  )

};

BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)

}}

namespace boost_{ namespace mpl {
template<>
struct plus_impl< integral_c_tag,