GCC workaround

[SVN r26217]
This commit is contained in:
Aleksey Gurtovoy
2004-11-15 13:12:51 +00:00
parent f431ed7cf8
commit 82d4d0a52a

View File

@@ -18,6 +18,7 @@
#include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/na_spec.hpp>
#include <boost/mpl/aux_/lambda_support.hpp> #include <boost/mpl/aux_/lambda_support.hpp>
#include <boost/mpl/aux_/config/msvc.hpp> #include <boost/mpl/aux_/config/msvc.hpp>
#include <boost/mpl/aux_/config/gcc.hpp>
#include <boost/mpl/aux_/config/workaround.hpp> #include <boost/mpl/aux_/config/workaround.hpp>
namespace boost { namespace mpl { namespace boost { namespace mpl {
@@ -28,13 +29,16 @@ template<
, typename BOOST_MPL_AUX_NA_PARAM(F2) , typename BOOST_MPL_AUX_NA_PARAM(F2)
> >
struct eval_if struct eval_if
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
: if_<C,F1,F2>::type || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
{ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
#else )
{ {
typedef typename if_<C,F1,F2>::type f_; typedef typename if_<C,F1,F2>::type f_;
typedef typename f_::type type; typedef typename f_::type type;
#else
: if_<C,F1,F2>::type
{
#endif #endif
BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2)) BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
}; };
@@ -47,13 +51,16 @@ template<
, typename F2 , typename F2
> >
struct eval_if_c struct eval_if_c
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
: if_c<C,F1,F2>::type || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
{ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
#else )
{ {
typedef typename if_c<C,F1,F2>::type f_; typedef typename if_c<C,F1,F2>::type f_;
typedef typename f_::type type; typedef typename f_::type type;
#else
: if_c<C,F1,F2>::type
{
#endif #endif
}; };