我正在尝试使用C++ 11 Lambda来初始化类的const
成员变量。您可以在类的初始化列表中使用Lambda吗?
一个更简单的例子:
class Foo
{
public:
const int n_;
Foo();
};
Foo::Foo()
: n_([]() -> int { return 42; })
{
}
int main()
{
Foo f;
}
在MSVC10这产生了:
error C2440: 'initializing' : cannot convert from '`anonymous-namespace'::<lambda0>' to 'const int'
在IDEONE这产生了:
prog.cpp: In constructor 'Foo::Foo()':
prog.cpp:9:34: error: invalid conversion from 'int (*)()' to 'int'
我开始明白我的意思,我不能在类的初始化列表中使用lambdas。
我可以吗?如果是这样,那么正确的语法是什么?
+1:是的,我试图通过从lambda返回值来填充'n_'。 –
@John查看更新。我实际上看到了如何用更复杂的(多语句)lambda来实现它。确切地说, –
。在我的实际使用情况中,我以字节存储只读文件的大小。 –