/
usr
/
include
/
boost
/
mpl
/
/usr/include/boost/mpl
mkdir
upload
Name
Size
Mode
Actions
aux_/
-
0755
rm
limits/
-
0755
rm
list/
-
0755
rm
map/
-
0755
rm
math/
-
0755
rm
multiset/
-
0755
rm
set/
-
0755
rm
vector/
-
0755
rm
accumulate.hpp
946
0644
edit
dl
rm
advance.hpp
1955
0644
edit
dl
rm
advance_fwd.hpp
660
0644
edit
dl
rm
alias.hpp
452
0644
edit
dl
rm
always.hpp
838
0644
edit
dl
rm
and.hpp
1593
0644
edit
dl
rm
apply.hpp
6087
0644
edit
dl
rm
apply_fwd.hpp
2663
0644
edit
dl
rm
apply_wrap.hpp
6177
0644
edit
dl
rm
arg.hpp
3216
0644
edit
dl
rm
arg_fwd.hpp
711
0644
edit
dl
rm
arithmetic.hpp
665
0644
edit
dl
rm
assert.hpp
14745
0644
edit
dl
rm
as_sequence.hpp
879
0644
edit
dl
rm
at.hpp
1201
0644
edit
dl
rm
at_fwd.hpp
546
0644
edit
dl
rm
back.hpp
901
0644
edit
dl
rm
back_fwd.hpp
544
0644
edit
dl
rm
back_inserter.hpp
686
0644
edit
dl
rm
base.hpp
716
0644
edit
dl
rm
begin.hpp
440
0644
edit
dl
rm
begin_end.hpp
1444
0644
edit
dl
rm
begin_end_fwd.hpp
646
0644
edit
dl
rm
bind.hpp
14951
0644
edit
dl
rm
bind_fwd.hpp
2493
0644
edit
dl
rm
bitand.hpp
1146
0644
edit
dl
rm
bitor.hpp
1133
0644
edit
dl
rm
bitwise.hpp
613
0644
edit
dl
rm
bitxor.hpp
587
0644
edit
dl
rm
bool.hpp
964
0644
edit
dl
rm
bool_fwd.hpp
766
0644
edit
dl
rm
char.hpp
575
0644
edit
dl
rm
char_fwd.hpp
734
0644
edit
dl
rm
clear.hpp
910
0644
edit
dl
rm
clear_fwd.hpp
549
0644
edit
dl
rm
comparison.hpp
635
0644
edit
dl
rm
contains.hpp
1009
0644
edit
dl
rm
contains_fwd.hpp
603
0644
edit
dl
rm
copy.hpp
1106
0644
edit
dl
rm
copy_if.hpp
2085
0644
edit
dl
rm
count.hpp
953
0644
edit
dl
rm
count_fwd.hpp
561
0644
edit
dl
rm
count_if.hpp
1766
0644
edit
dl
rm
deque.hpp
1682
0644
edit
dl
rm
deref.hpp
939
0644
edit
dl
rm
distance.hpp
2028
0644
edit
dl
rm
distance_fwd.hpp
666
0644
edit
dl
rm
divides.hpp
523
0644
edit
dl
rm
empty.hpp
910
0644
edit
dl
rm
empty_base.hpp
1399
0644
edit
dl
rm
empty_fwd.hpp
549
0644
edit
dl
rm
empty_sequence.hpp
921
0644
edit
dl
rm
end.hpp
434
0644
edit
dl
rm
equal.hpp
2668
0644
edit
dl
rm
equal_to.hpp
528
0644
edit
dl
rm
erase.hpp
1071
0644
edit
dl
rm
erase_fwd.hpp
580
0644
edit
dl
rm
erase_key.hpp
1047
0644
edit
dl
rm
erase_key_fwd.hpp
583
0644
edit
dl
rm
eval_if.hpp
1754
0644
edit
dl
rm
filter_view.hpp
1145
0644
edit
dl
rm
find.hpp
841
0644
edit
dl
rm
find_if.hpp
1196
0644
edit
dl
rm
fold.hpp
1177
0644
edit
dl
rm
for_each.hpp
3077
0644
edit
dl
rm
front.hpp
910
0644
edit
dl
rm
front_fwd.hpp
549
0644
edit
dl
rm
front_inserter.hpp
692
0644
edit
dl
rm
get_tag.hpp
576
0644
edit
dl
rm
greater.hpp
523
0644
edit
dl
rm
greater_equal.hpp
548
0644
edit
dl
rm
has_key.hpp
1059
0644
edit
dl
rm
has_key_fwd.hpp
622
0644
edit
dl
rm
has_xxx.hpp
22056
0644
edit
dl
rm
identity.hpp
951
0644
edit
dl
rm
if.hpp
2910
0644
edit
dl
rm
index_if.hpp
1508
0644
edit
dl
rm
index_of.hpp
899
0644
edit
dl
rm
inherit.hpp
5670
0644
edit
dl
rm
inherit_linearly.hpp
966
0644
edit
dl
rm
insert.hpp
1030
0644
edit
dl
rm
inserter.hpp
648
0644
edit
dl
rm
insert_fwd.hpp
585
0644
edit
dl
rm
insert_range.hpp
1081
0644
edit
dl
rm
insert_range_fwd.hpp
614
0644
edit
dl
rm
int.hpp
520
0644
edit
dl
rm
integral_c.hpp
1509
0644
edit
dl
rm
integral_c_fwd.hpp
887
0644
edit
dl
rm
integral_c_tag.hpp
725
0644
edit
dl
rm
int_fwd.hpp
678
0644
edit
dl
rm
is_placeholder.hpp
1483
0644
edit
dl
rm
is_sequence.hpp
2644
0644
edit
dl
rm
iterator_category.hpp
820
0644
edit
dl
rm
iterator_range.hpp
943
0644
edit
dl
rm
iterator_tags.hpp
764
0644
edit
dl
rm
iter_fold.hpp
1272
0644
edit
dl
rm
iter_fold_if.hpp
3072
0644
edit
dl
rm
joint_view.hpp
1656
0644
edit
dl
rm
key_type.hpp
1064
0644
edit
dl
rm
key_type_fwd.hpp
625
0644
edit
dl
rm
lambda.hpp
780
0644
edit
dl
rm
lambda_fwd.hpp
1201
0644
edit
dl
rm
less.hpp
511
0644
edit
dl
rm
less_equal.hpp
536
0644
edit
dl
rm
list.hpp
1608
0644
edit
dl
rm
list_c.hpp
1814
0644
edit
dl
rm
logical.hpp
502
0644
edit
dl
rm
long.hpp
525
0644
edit
dl
rm
long_fwd.hpp
684
0644
edit
dl
rm
lower_bound.hpp
3605
0644
edit
dl
rm
map.hpp
1593
0644
edit
dl
rm
max.hpp
432
0644
edit
dl
rm
max_element.hpp
1580
0644
edit
dl
rm
min.hpp
432
0644
edit
dl
rm
minus.hpp
515
0644
edit
dl
rm
min_element.hpp
815
0644
edit
dl
rm
min_max.hpp
908
0644
edit
dl
rm
modulus.hpp
552
0644
edit
dl
rm
multiplies.hpp
1341
0644
edit
dl
rm
negate.hpp
1879
0644
edit
dl
rm
next.hpp
438
0644
edit
dl
rm
next_prior.hpp
1047
0644
edit
dl
rm
not.hpp
1029
0644
edit
dl
rm
not_equal_to.hpp
544
0644
edit
dl
rm
numeric_cast.hpp
1221
0644
edit
dl
rm
O1_size.hpp
1003
0644
edit
dl
rm
O1_size_fwd.hpp
559
0644
edit
dl
rm
or.hpp
1623
0644
edit
dl
rm
order.hpp
1041
0644
edit
dl
rm
order_fwd.hpp
612
0644
edit
dl
rm
pair.hpp
1501
0644
edit
dl
rm
pair_view.hpp
4355
0644
edit
dl
rm
partition.hpp
1046
0644
edit
dl
rm
placeholders.hpp
2450
0644
edit
dl
rm
plus.hpp
511
0644
edit
dl
rm
pop_back.hpp
937
0644
edit
dl
rm
pop_back_fwd.hpp
564
0644
edit
dl
rm
pop_front.hpp
946
0644
edit
dl
rm
pop_front_fwd.hpp
569
0644
edit
dl
rm
print.hpp
1669
0644
edit
dl
rm
prior.hpp
441
0644
edit
dl
rm
protect.hpp
1237
0644
edit
dl
rm
push_back.hpp
1289
0644
edit
dl
rm
push_back_fwd.hpp
581
0644
edit
dl
rm
push_front.hpp
1301
0644
edit
dl
rm
push_front_fwd.hpp
586
0644
edit
dl
rm
quote.hpp
3634
0644
edit
dl
rm
range_c.hpp
1124
0644
edit
dl
rm
remove.hpp
1033
0644
edit
dl
rm
remove_if.hpp
1892
0644
edit
dl
rm
replace.hpp
1169
0644
edit
dl
rm
replace_if.hpp
1795
0644
edit
dl
rm
reverse.hpp
759
0644
edit
dl
rm
reverse_fold.hpp
1282
0644
edit
dl
rm
reverse_iter_fold.hpp
1497
0644
edit
dl
rm
same_as.hpp
1124
0644
edit
dl
rm
sequence_tag.hpp
2989
0644
edit
dl
rm
sequence_tag_fwd.hpp
588
0644
edit
dl
rm
set.hpp
1593
0644
edit
dl
rm
set_c.hpp
1796
0644
edit
dl
rm
shift_left.hpp
560
0644
edit
dl
rm
shift_right.hpp
564
0644
edit
dl
rm
single_view.hpp
813
0644
edit
dl
rm
size.hpp
1008
0644
edit
dl
rm
sizeof.hpp
766
0644
edit
dl
rm
size_fwd.hpp
544
0644
edit
dl
rm
size_t.hpp
617
0644
edit
dl
rm
size_t_fwd.hpp
723
0644
edit
dl
rm
sort.hpp
614
0644
edit
dl
rm
stable_partition.hpp
1709
0644
edit
dl
rm
string.hpp
24547
0644
edit
dl
rm
switch.hpp
1187
0644
edit
dl
rm
tag.hpp
1023
0644
edit
dl
rm
times.hpp
515
0644
edit
dl
rm
transform.hpp
4202
0644
edit
dl
rm
transform_view.hpp
1124
0644
edit
dl
rm
unique.hpp
2053
0644
edit
dl
rm
unpack_args.hpp
3563
0644
edit
dl
rm
upper_bound.hpp
3557
0644
edit
dl
rm
value_type.hpp
1084
0644
edit
dl
rm
value_type_fwd.hpp
635
0644
edit
dl
rm
vector.hpp
1644
0644
edit
dl
rm
vector_c.hpp
1932
0644
edit
dl
rm
void.hpp
1608
0644
edit
dl
rm
void_fwd.hpp
599
0644
edit
dl
rm
zip_view.hpp
1542
0644
edit
dl
rm
Edit:
/usr/include/boost/mpl/assert.hpp
(14745B)
#ifndef BOOST_MPL_ASSERT_HPP_INCLUDED #define BOOST_MPL_ASSERT_HPP_INCLUDED // Copyright Aleksey Gurtovoy 2000-2006 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/mpl for documentation. // $Id$ // $Date$ // $Revision$ #include <boost/mpl/not.hpp> #include <boost/mpl/aux_/value_wknd.hpp> #include <boost/mpl/aux_/nested_type_wknd.hpp> #include <boost/mpl/aux_/yes_no.hpp> #include <boost/mpl/aux_/na.hpp> #include <boost/mpl/aux_/adl_barrier.hpp> #include <boost/mpl/aux_/config/nttp.hpp> #include <boost/mpl/aux_/config/dtp.hpp> #include <boost/mpl/aux_/config/gcc.hpp> #include <boost/mpl/aux_/config/msvc.hpp> #include <boost/mpl/aux_/config/gpu.hpp> #include <boost/mpl/aux_/config/static_constant.hpp> #include <boost/mpl/aux_/config/pp_counter.hpp> #include <boost/mpl/aux_/config/workaround.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/config.hpp> // make sure 'size_t' is placed into 'std' #include <cstddef> #if BOOST_WORKAROUND(BOOST_MSVC, == 1700) #include <boost/mpl/if.hpp> #endif #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || (BOOST_MPL_CFG_GCC != 0) \ || BOOST_WORKAROUND(__IBMCPP__, <= 600) # define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES #endif #if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) # define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER #endif // agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants) // and GCC (which issues "unused variable" warnings when static constants are used // at a function scope) #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \ || (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr } #else # define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr) #endif BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN struct failed {}; // agurt, 24/aug/04: MSVC 7.1 workaround here and below: return/accept // 'assert<false>' by reference; can't apply it unconditionally -- apparently it // degrades the quality of GCC diagnostics #if BOOST_WORKAROUND(BOOST_MSVC, == 1310) # define AUX778076_ASSERT_ARG(x) x& #else # define AUX778076_ASSERT_ARG(x) x #endif template< bool C > struct assert { typedef void* type; }; template<> struct assert<false> { typedef AUX778076_ASSERT_ARG(assert) type; }; template< bool C > int assertion_failed( typename assert<C>::type ); template< bool C > struct assertion { static int failed( assert<false> ); }; template<> struct assertion<true> { static int failed( void* ); }; struct assert_ { #if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {}; #endif static assert_ const arg; enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal }; }; #if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES) bool operator==( failed, failed ); bool operator!=( failed, failed ); bool operator>( failed, failed ); bool operator>=( failed, failed ); bool operator<( failed, failed ); bool operator<=( failed, failed ); #if defined(__EDG_VERSION__) template< bool (*)(failed, failed), long x, long y > struct assert_relation {}; # define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<r,x,y> #else template< BOOST_MPL_AUX_NTTP_DECL(long, x), BOOST_MPL_AUX_NTTP_DECL(long, y), bool (*)(failed, failed) > struct assert_relation {}; # define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<x,y,r> #endif #else // BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ ); boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ ); boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ ); boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ ); boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ ); boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ ); template< assert_::relations r, long x, long y > struct assert_relation {}; #endif #if BOOST_WORKAROUND(BOOST_MSVC, == 1700) template<class Pred> struct extract_assert_pred; template<class Pred> struct extract_assert_pred<void(Pred)> { typedef Pred type; }; template<class Pred> struct eval_assert { typedef typename extract_assert_pred<Pred>::type P; typedef typename P::type p_type; typedef typename ::boost::mpl::if_c<p_type::value, AUX778076_ASSERT_ARG(assert<false>), failed ************ P::************ >::type type; }; template<class Pred> struct eval_assert_not { typedef typename extract_assert_pred<Pred>::type P; typedef typename P::type p_type; typedef typename ::boost::mpl::if_c<!p_type::value, AUX778076_ASSERT_ARG(assert<false>), failed ************ ::boost::mpl::not_<P>::************ >::type type; }; template< typename T > T make_assert_arg(); #elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER) template< bool > struct assert_arg_pred_impl { typedef int type; }; template<> struct assert_arg_pred_impl<true> { typedef void* type; }; template< typename P > struct assert_arg_pred { typedef typename P::type p_type; typedef typename assert_arg_pred_impl< p_type::value >::type type; }; template< typename P > struct assert_arg_pred_not { typedef typename P::type p_type; BOOST_MPL_AUX_ASSERT_CONSTANT( bool, p = !p_type::value ); typedef typename assert_arg_pred_impl<p>::type type; }; #if defined(BOOST_GCC) && BOOST_GCC >= 80000 #define BOOST_MPL_IGNORE_PARENTHESES_WARNING #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wparentheses" #endif template< typename Pred > failed ************ (Pred::************ assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type ) ); template< typename Pred > failed ************ (boost::mpl::not_<Pred>::************ assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type ) ); #ifdef BOOST_MPL_IGNORE_PARENTHESES_WARNING #undef BOOST_MPL_IGNORE_PARENTHESES_WARNING #pragma GCC diagnostic pop #endif template< typename Pred > AUX778076_ASSERT_ARG(assert<false>) assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type ); template< typename Pred > AUX778076_ASSERT_ARG(assert<false>) assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type ); #else // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER template< bool c, typename Pred > struct assert_arg_type_impl { typedef failed ************ Pred::* mwcw83_wknd; typedef mwcw83_wknd ************* type; }; template< typename Pred > struct assert_arg_type_impl<true,Pred> { typedef AUX778076_ASSERT_ARG(assert<false>) type; }; template< typename Pred > struct assert_arg_type : assert_arg_type_impl< BOOST_MPL_AUX_VALUE_WKND(BOOST_MPL_AUX_NESTED_TYPE_WKND(Pred))::value, Pred > { }; template< typename Pred > typename assert_arg_type<Pred>::type assert_arg(void (*)(Pred), int); template< typename Pred > typename assert_arg_type< boost::mpl::not_<Pred> >::type assert_not_arg(void (*)(Pred), int); # if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES) template< long x, long y, bool (*r)(failed, failed) > typename assert_arg_type_impl< false,BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) >::type assert_rel_arg( BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) ); # else template< assert_::relations r, long x, long y > typename assert_arg_type_impl< false,assert_relation<r,x,y> >::type assert_rel_arg( assert_relation<r,x,y> ); # endif #endif // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER #undef AUX778076_ASSERT_ARG BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE #if BOOST_WORKAROUND(BOOST_MSVC, == 1700) // BOOST_MPL_ASSERT((pred<x,...>)) #define BOOST_MPL_ASSERT(pred) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<false>( \ boost::mpl::make_assert_arg< \ typename boost::mpl::eval_assert<void pred>::type \ >() \ ) \ ) \ ) \ /**/ // BOOST_MPL_ASSERT_NOT((pred<x,...>)) #define BOOST_MPL_ASSERT_NOT(pred) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<false>( \ boost::mpl::make_assert_arg< \ typename boost::mpl::eval_assert_not<void pred>::type \ >() \ ) \ ) \ ) \ /**/ #else // BOOST_MPL_ASSERT((pred<x,...>)) #define BOOST_MPL_ASSERT(pred) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<false>( \ boost::mpl::assert_arg( (void (*) pred)0, 1 ) \ ) \ ) \ ) \ /**/ // BOOST_MPL_ASSERT_NOT((pred<x,...>)) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) # define BOOST_MPL_ASSERT_NOT(pred) \ enum { \ BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion<false>::failed( \ boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \ ) \ ) \ }\ /**/ #else # define BOOST_MPL_ASSERT_NOT(pred) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<false>( \ boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \ ) \ ) \ ) \ /**/ #endif #endif // BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y) #if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES) # if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER) // agurt, 9/nov/06: 'enum' below is a workaround for gcc 4.0.4/4.1.1 bugs #29522 and #29518 # define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \ enum { BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \ boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \ (boost::mpl::failed ************ ( boost::mpl::assert_relation< \ boost::mpl::assert_::relations( sizeof( \ boost::mpl::assert_::arg rel boost::mpl::assert_::arg \ ) ) \ , x \ , y \ >::************)) 0 ) \ ) \ ) \ /**/ # else # define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assert_rel,counter) = sizeof( \ boost::mpl::assert_::arg rel boost::mpl::assert_::arg \ ) \ ); \ BOOST_MPL_AUX_ASSERT_CONSTANT( bool, BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) ); \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \ boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \ boost::mpl::assert_rel_arg( boost::mpl::assert_relation< \ boost::mpl::assert_::relations(BOOST_PP_CAT(mpl_assert_rel,counter)) \ , x \ , y \ >() ) \ ) \ ) \ ) \ /**/ # endif # define BOOST_MPL_ASSERT_RELATION(x, rel, y) \ BOOST_MPL_ASSERT_RELATION_IMPL(BOOST_MPL_AUX_PP_COUNTER(), x, rel, y) \ /**/ #else // !BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES # if defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER) # define BOOST_MPL_ASSERT_RELATION(x, rel, y) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<(x rel y)>( boost::mpl::assert_rel_arg( \ boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&boost::mpl::operator rel))() \ ) ) \ ) \ ) \ /**/ # else # define BOOST_MPL_ASSERT_RELATION(x, rel, y) \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \ boost::mpl::assertion_failed<(x rel y)>( (boost::mpl::failed ************ ( \ boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&boost::mpl::operator rel))::************))0 ) \ ) \ ) \ /**/ # endif #endif // BOOST_MPL_ASSERT_MSG( (pred<x,...>::value), USER_PROVIDED_MESSAGE, (types<x,...>) ) #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) # define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \ struct msg; \ typedef struct BOOST_PP_CAT(msg,counter) : boost::mpl::assert_ \ { \ using boost::mpl::assert_::types; \ static boost::mpl::failed ************ (msg::************ assert_arg()) types_ \ { return 0; } \ } BOOST_PP_CAT(mpl_assert_arg,counter); \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \ boost::mpl::assertion<(c)>::failed( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \ ) \ ) \ /**/ #else # define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \ struct msg; \ typedef struct BOOST_PP_CAT(msg,counter) : boost::mpl::assert_ \ { \ static boost::mpl::failed ************ (msg::************ assert_arg()) types_ \ { return 0; } \ } BOOST_PP_CAT(mpl_assert_arg,counter); \ BOOST_MPL_AUX_ASSERT_CONSTANT( \ std::size_t \ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \ boost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \ ) \ ) \ /**/ #endif #if 0 // Work around BOOST_MPL_ASSERT_MSG_IMPL generating multiple definition linker errors on VC++8. // #if defined(BOOST_MSVC) && BOOST_MSVC < 1500 # include <boost/static_assert.hpp> # define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \ BOOST_STATIC_ASSERT_MSG( c, #msg ) \ /**/ #else # define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \ BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \ /**/ #endif #endif // BOOST_MPL_ASSERT_HPP_INCLUDED
Save
cmd:
run