Я пытаюсь использовать лямбда как статический член, например:
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 lambdas не считаются постоянным выражением. Это верно? Возможно, они еще не полностью реализовали lambdas в clang, потому что gcc 4.7, по-видимому, разрешает его как constexpr
, но он дает еще одну ошибку:
error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined
Я не уверен, я понимаю, что это значит. Кажется, правильно вывести тип лямбды, но он только объявляет его и не определяет. Как я могу определить его?