mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-03 14:54:30 +02:00
make 'bitand_', 'bitor_' and 'bitxor_' binary
[SVN r17809]
This commit is contained in:
@@ -29,41 +29,33 @@ namespace boost {
|
|||||||
namespace mpl {
|
namespace mpl {
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename T, T N1, T N2, T N3 = 0xFFFFFFFF, T N4 = 0xFFFFFFFF, T N5 = 0xFFFFFFFF
|
typename T, T N1, T N2
|
||||||
>
|
>
|
||||||
struct bitand_c
|
struct bitand_c
|
||||||
{
|
{
|
||||||
BOOST_STATIC_CONSTANT(T, value = (N1 & N2 & N3 & N4 & N5));
|
BOOST_STATIC_CONSTANT(T, value = (N1 & N2));
|
||||||
#if !defined(__BORLANDC__)
|
#if !defined(__BORLANDC__)
|
||||||
typedef integral_c<T,value> type;
|
typedef integral_c<T,value> type;
|
||||||
#else
|
#else
|
||||||
typedef integral_c<T,(N1 & N2 & N3 & N4 & N5)> type;
|
typedef integral_c<T,(N1 & N2)> type;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
||||||
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
||||||
, typename T3 = integral_c<int,0xFFFFFFFF>
|
|
||||||
, typename T4 = integral_c<int,0xFFFFFFFF>
|
|
||||||
, typename T5 = integral_c<int,0xFFFFFFFF>
|
|
||||||
>
|
>
|
||||||
struct bitand_
|
struct bitand_
|
||||||
: bitand_c<
|
: bitand_c<
|
||||||
BOOST_MPL_AUX_TYPEOF(T1,
|
BOOST_MPL_AUX_TYPEOF(T1, T1::value & T2::value)
|
||||||
T1::value & T2::value & T3::value & T4::value & T5::value
|
|
||||||
)
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
|
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitand_, (T1,T2,T3,T4,T5))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (T1,T2))
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitand_)
|
BOOST_MPL_AUX_VOID_SPEC(2,bitand_)
|
||||||
|
|
||||||
} // namespace mpl
|
} // namespace mpl
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
@@ -29,41 +29,33 @@ namespace boost {
|
|||||||
namespace mpl {
|
namespace mpl {
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0
|
typename T, T N1, T N2
|
||||||
>
|
>
|
||||||
struct bitor_c
|
struct bitor_c
|
||||||
{
|
{
|
||||||
BOOST_STATIC_CONSTANT(T, value = (N1 | N2 | N3 | N4 | N5));
|
BOOST_STATIC_CONSTANT(T, value = (N1 | N2));
|
||||||
#if !defined(__BORLANDC__)
|
#if !defined(__BORLANDC__)
|
||||||
typedef integral_c<T,value> type;
|
typedef integral_c<T,value> type;
|
||||||
#else
|
#else
|
||||||
typedef integral_c<T,(N1 | N2 | N3 | N4 | N5)> type;
|
typedef integral_c<T,(N1 | N2)> type;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
||||||
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
||||||
, typename T3 = integral_c<int,0xFFFFFFFF>
|
|
||||||
, typename T4 = integral_c<int,0xFFFFFFFF>
|
|
||||||
, typename T5 = integral_c<int,0xFFFFFFFF>
|
|
||||||
>
|
>
|
||||||
struct bitor_
|
struct bitor_
|
||||||
: bitor_c<
|
: bitor_c<
|
||||||
BOOST_MPL_AUX_TYPEOF(T1,
|
BOOST_MPL_AUX_TYPEOF(T1, T1::value | T2::value)
|
||||||
T1::value | T2::value | T3::value | T4::value | T5::value
|
|
||||||
)
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
|
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitor_, (T1,T2,T3,T4,T5))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (T1,T2))
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitor_)
|
BOOST_MPL_AUX_VOID_SPEC(2,bitor_)
|
||||||
|
|
||||||
} // namespace mpl
|
} // namespace mpl
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
@@ -29,41 +29,33 @@ namespace boost {
|
|||||||
namespace mpl {
|
namespace mpl {
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0
|
typename T, T N1, T N2
|
||||||
>
|
>
|
||||||
struct bitxor_c
|
struct bitxor_c
|
||||||
{
|
{
|
||||||
BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2 ^ N3 ^ N4 ^ N5));
|
BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2));
|
||||||
#if !defined(__BORLANDC__)
|
#if !defined(__BORLANDC__)
|
||||||
typedef integral_c<T,value> type;
|
typedef integral_c<T,value> type;
|
||||||
#else
|
#else
|
||||||
typedef integral_c<T,(N1 ^ N2 ^ N3 ^ N4 ^ N5)> type;
|
typedef integral_c<T,(N1 ^ N2)> type;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
|
||||||
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
|
||||||
, typename T3 = integral_c<int,0>
|
|
||||||
, typename T4 = integral_c<int,0>
|
|
||||||
, typename T5 = integral_c<int,0>
|
|
||||||
>
|
>
|
||||||
struct bitxor_
|
struct bitxor_
|
||||||
: bitxor_c<
|
: bitxor_c<
|
||||||
BOOST_MPL_AUX_TYPEOF(T1,
|
BOOST_MPL_AUX_TYPEOF(T1, T1::value ^ T2::value)
|
||||||
T1::value ^ T2::value ^ T3::value ^ T4::value ^ T5::value
|
|
||||||
)
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
|
|
||||||
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
|
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitxor_, (T1,T2,T3,T4,T5))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (T1,T2))
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitxor_)
|
BOOST_MPL_AUX_VOID_SPEC(2,bitxor_)
|
||||||
|
|
||||||
} // namespace mpl
|
} // namespace mpl
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
Reference in New Issue
Block a user