2
// Copyright Aleksey Gurtovoy 2000-2004
4
// Distributed under the Boost Software License, Version 1.0.
5
// (See accompanying file LICENSE_1_0.txt or copy at
6
// http://www.boost.org/LICENSE_1_0.txt)
9
// Preprocessed version of "boost/mpl/modulus.hpp" header
10
// -- DO NOT modify by hand!
12
namespace boost { namespace mpl {
18
, BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
19
, BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
24
, aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
25
, aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
30
/// for Digital Mars C++/compilers with no CTPS/TTP support
31
template<> struct modulus_impl< na,na >
33
template< typename U1, typename U2 > struct apply
36
BOOST_STATIC_CONSTANT(int, value = 0);
40
template<> struct modulus_impl< na,integral_c_tag >
42
template< typename U1, typename U2 > struct apply
45
BOOST_STATIC_CONSTANT(int, value = 0);
49
template<> struct modulus_impl< integral_c_tag,na >
51
template< typename U1, typename U2 > struct apply
54
BOOST_STATIC_CONSTANT(int, value = 0);
58
template< typename T > struct modulus_tag
64
typename BOOST_MPL_AUX_NA_PARAM(N1)
65
, typename BOOST_MPL_AUX_NA_PARAM(N2)
68
: aux::msvc_eti_base< typename apply_wrap2<
70
typename modulus_tag<N1>::type
71
, typename modulus_tag<N2>::type
78
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
82
BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
86
namespace boost { namespace mpl {
89
template< typename T, T n1, T n2 >
92
BOOST_STATIC_CONSTANT(T, value = (n1 % n2));
93
typedef integral_c< T,value > type;
99
struct modulus_impl< integral_c_tag,integral_c_tag >
101
template< typename N1, typename N2 > struct apply
103
typename aux::largest_int<
104
typename N1::value_type
105
, typename N2::value_type