Я пытаюсь использовать лямбду в качестве статического члена, например:
struct A
{
static constexpr auto F = [](){};
};
int main()
{
A::F();
return 0;
}
Это даже правильный код С++ 11? На clang я получаю эту ошибку:
error: constexpr variable 'F' must be initialized by a constant
expression
static constexpr auto F = [](){};
^~~~~~
Кажется, в clang лямбды не считаются постоянным выражением. Это верно? Возможно, они еще не полностью реализовали лямбда-выражения в clang, потому что gcc 4.7, кажется, позволяет это как constexpr
, но выдает другую ошибку:
error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined
Я не уверен, я понимаю, что это значит. Кажется, что он правильно выводит тип лямбда, но он только объявляет его, а не определяет. Как бы я его определил?