Я пытаюсь использовать 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'::' to 'const int'
В IDEONEэто дает:
prog.cpp: In constructor 'Foo::Foo()':
prog.cpp:9:34: error: invalid conversion from 'int (*)()' to 'int'
Я начинаю понимать, что я не могу использовать лямбда-выражения в списке инициализации класса.
Могу ли я? Если да, то каков правильный синтаксис?