2 // Copyright Aleksey Gurtovoy 2000-2004
3 // Copyright Jaap Suter 2003
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
10 // *Preprocessed* version of the main "shift_left.hpp" header
11 // -- DO NOT modify by hand!
13 namespace boost
{ namespace mpl
{
19 struct shift_left_impl
21 ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1
)
22 > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2
)
25 , aux::cast2nd_impl
< shift_left_impl
< Tag1
,Tag1
>,Tag1
, Tag2
>
26 , aux::cast1st_impl
< shift_left_impl
< Tag2
,Tag2
>,Tag1
, Tag2
>
31 /// for Digital Mars C++/compilers with no CTPS/TTP support
32 template<> struct shift_left_impl
< na
,na
>
34 template< typename U1
, typename U2
> struct apply
37 BOOST_STATIC_CONSTANT(int, value
= 0);
41 template< typename Tag
> struct shift_left_impl
< na
,Tag
>
43 template< typename U1
, typename U2
> struct apply
46 BOOST_STATIC_CONSTANT(int, value
= 0);
50 template< typename Tag
> struct shift_left_impl
< Tag
,na
>
52 template< typename U1
, typename U2
> struct apply
55 BOOST_STATIC_CONSTANT(int, value
= 0);
59 template< typename T
> struct shift_left_tag
61 typedef typename
T::tag type
;
65 typename
BOOST_MPL_AUX_NA_PARAM(N1
)
66 , typename
BOOST_MPL_AUX_NA_PARAM(N2
)
71 typename shift_left_tag
<N1
>::type
72 , typename shift_left_tag
<N2
>::type
73 >::template apply
< N1
,N2
>::type
75 BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left
, (N1
, N2
))
79 BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left
)
83 namespace boost
{ namespace mpl
{
85 struct shift_left_impl
< integral_c_tag
,integral_c_tag
>
87 template< typename N
, typename S
> struct apply
90 typename
N::value_type
91 , ( BOOST_MPL_AUX_VALUE_WKND(N
)::value
92 << BOOST_MPL_AUX_VALUE_WKND(S
)::value