次のように、ラムダを静的メンバーとして使用しようとしています。
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 = [](){};
^~~~~~
ラムダは定数式とは見なされません。これは正しいです?おそらく、gcc 4.7 ではラムダを として許可しているように見えるため、clang でラムダをまだ完全に実装していない可能性constexpr
がありますが、別のエラーが発生します。
error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined
よくわかりませんが、それが何を意味するのか理解しています。ラムダの型を正しく推測しているように見えますが、宣言するだけで定義しません。それを定義するにはどうすればよいですか?