Ticket #4526: patchfile.patch

File patchfile.patch, 1.3 KB (added by Stefan van Kessel <van_kessel@…>, 12 years ago)

patch for boost\concept\requires.hpp

  • requires.hpp

     
    5050# define BOOST_CONCEPT_REQUIRES(models, result)                                    \
    5151    typename ::boost::parameter::aux::unaryfunptr_arg_type<void(*)result>::type
    5252
     53#elif BOOST_WORKAROUND(BOOST_MSVC, == 1600)
     54template <typename T1, typename T2>
     55struct requires_msvc10
     56{
     57        typedef typename T2::type type;
     58};
     59
     60template <typename T>
     61struct relay_type_msvc10
     62{
     63        typedef T type;
     64};
     65
     66#define BOOST_CONCEPT_STRIP_PARENS(x) x
     67#define BOOST_CONCEPT_TEST_SINGLE_REQUIREMENT(x)  decltype(::boost::_requires_<void(*) (x) >::value)
     68#define BOOST_CONCEPT_CLOSE_TEMPLATE(r, data, elem) >
     69#define BOOST_CONCEPT_OPEN_TEMPLATE(r, data, i, elem) ::boost::requires_msvc10< BOOST_CONCEPT_TEST_SINGLE_REQUIREMENT elem ,
     70
     71#define BOOST_CONCEPT_REQUIRES(models , result)                                                                 \
     72        typename                                                                                                                                        \
     73        BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_OPEN_TEMPLATE, 0, models)                         \
     74                ::boost::relay_type_msvc10< BOOST_CONCEPT_STRIP_PARENS result>                  \
     75                BOOST_PP_SEQ_FOR_EACH(BOOST_CONCEPT_CLOSE_TEMPLATE, 0, models)                  \
     76                ::type
     77
    5378#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
    5479
    5580// Same thing as below without the initial typename