лямбда как статический элемент

Я пытаюсь использовать лямбду в качестве статического члена, например:

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

Я не уверен, я понимаю, что это значит. Кажется, что он правильно выводит тип лямбда, но он только объявляет его, а не определяет. Как бы я его определил?

27
задан Mark Hurd 8 June 2014 в 11:11
поделиться