我正在尝试使用 lambda 作为静态成员,如下所示:
struct A
{
static constexpr auto F = [](){};
};
int main()
{
A::F();
return 0;
}
这甚至是正确的 C++11 代码吗?在铿锵声中,我收到此错误:
error: constexpr variable 'F' must be initialized by a constant
expression
static constexpr auto F = [](){};
^~~~~~
在 clang 中,lambda 似乎不被视为常量表达式。它是否正确?也许他们还没有在 clang 中完全实现 lambdas,因为 gcc 4.7 似乎允许它作为 a constexpr
,但它给出了另一个错误:
error: ‘constexpr const<lambda()> A::F’, declared using local type ‘const<lambda()>’, is used but never defined
我不确定,我明白这意味着什么。它似乎正确地推断出 lambda 的类型,但它只声明它而不定义它。我将如何定义它?