lambda jako element statyczny

Próbuję użyć lambda jako elementu statycznego, takiego jak ten:

struct A
{
    static constexpr auto F = [](){};
};


int main()
{
    A::F();
    return 0;
}

Czy to nawet poprawny kod C ++ 11? W clang pojawia się ten błąd:

error: constexpr variable 'F' must be initialized by a constant
      expression
    static constexpr auto F = [](){};
                              ^~~~~~

Wygląda na to, że lambdy nie są uważane za stałe wyrażenie. Czy to jest poprawne? Być może nie w pełni zaimplementowali lambdy w klangach, ponieważ wydaje się, że gcc 4.7 zezwala na toconstexpr, ale daje inny błąd:

error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined

Nie jestem pewien, rozumiem, co to znaczy. Wydaje się, że poprawnie wyprowadza typ lambda, ale deklaruje go i nie definiuje. Jak chciałbym to zdefiniować?

questionAnswers(2)

yourAnswerToTheQuestion