我正在尝试使用C++11 Lambda表达式来初始化类的const
成员变量。
以下是一个简化的示例:
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'
我开始意识到在类的初始化列表中不能使用lambda表达式。
我能使用吗?如果可以,那么正确的语法是什么?
n_
。 - John Dibling