c ++ 11 лямбда-выражения не работают с boost :: concept

Следующий код не работает с clang 3.3. но это делает слово с g ++ 4.8.1. Буст-версия 1.55.

#include <boost/concept_check.hpp>

template <typename X>
class  ConceptsBase {};

int main() {
auto l = [](){};

BOOST_CONCEPT_ASSERT((ConceptsBase<decltype(l)>));

return 0;
}

g ++ -std = c ++ 0x test.cpp -I / home / wygos / libs / boost_1_55_0 / include / # работает отлично!

clang ++ -std = c ++ 0x test.cpp -I / home / wygos / libs / boost_1_55_0 / include /

дает:

test.cpp:9:5: error: non-type template argument refers to function 'failed' that does not have linkage
BOOST_CONCEPT_ASSERT((ConceptsBase<decltype(l)>));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wygos/libs/boost_1_55_0/include/boost/concept/assert.hpp:44:5: note: expanded from macro 'BOOST_CONCEPT_ASSERT'
BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wygos/libs/boost_1_55_0/include/boost/concept/detail/general.hpp:70:6: note: expanded from macro 'BOOST_CONCEPT_ASSERT_FN'
&::boost::concepts::requirement_<ModelFnPtr>::failed>    \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/wygos/libs/boost_1_55_0/include/boost/concept/detail/general.hpp:38:17: note: non-type template argument refers to function here
static void failed() { ((Model*)0)->~Model(); }

Мое счастливое предположение, что это может быть связано с:

http://llvm.org/bugs/show_bug.cgi?id=17030

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …