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