
On 8/11/2010 12:28 AM, Dave Abrahams wrote:
Could you please make note of this in a Trac ticket? Otherwise it's liable to get lost.
Done. The Ticket # is 4526. With very little testing, the following code fixes the issue for me on MSVC10. I just tried avoiding non-type template arguments. #elif BOOST_WORKAROUND(BOOST_MSVC, == 1600) template <typename T1, typename T2> struct requires_msvc10 { typedef typename T2::type type; }; template <typename T> struct relay_type_msvc10 { typedef T type; }; #define BOOST_CONCEPT_STRIP_PARENS(x) x #define BOOST_CONCEPT_TEST_SINGLE_REQUIREMENT(x) decltype(::boost::_requires_<void(*) (x) >::value) #define BOOST_CONCEPT_CLOSE_TEMPLATE(r, data, elem) > #define BOOST_CONCEPT_OPEN_TEMPLATE(r, data, i, elem) ::boost::requires_msvc10< BOOST_CONCEPT_TEST_SINGLE_REQUIREMENT elem , #define BOOST_CONCEPT_REQUIRES(models , result) \ typename \ BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_OPEN_TEMPLATE, 0, models) \ ::boost::relay_type_msvc10< BOOST_CONCEPT_STRIP_PARENS result> \ BOOST_PP_SEQ_FOR_EACH(BOOST_CONCEPT_CLOSE_TEMPLATE, 0, models) \ ::type