C ++ 0x lambda捕获的值总是const?
有没有办法通过价值捕获,并使捕获的值非常量? 我有一个库函子,我想捕获和调用非const的方法,但应该是。
以下不编译,但使foo :: operator()const修复它。
struct foo { bool operator () ( const bool & a ) { return a; } }; int _tmain(int argc, _TCHAR* argv[]) { foo afoo; auto bar = [=] () -> bool { afoo(true); }; return 0; }
使用可变。
auto bar = [=] () mutable -> bool ....
没有mutable,你声明lambda对象const的operator()。
还有另一种使用mutable的方法 (由Crazy Eddie提出的解决scheme)。
用[=]您的块通过值捕获所有对象。 您可以使用[&]通过引用捕获所有对象:
auto bar = [&] () -> bool
或者你可以通过引用只捕捉某个对象[=,&afoo] :
auto bar = [=, &afoo] () -> bool
有关详细信息,请参阅此页面( 说明部分): http : //en.cppreference.com/w/cpp/language/lambda