我想做这样的事情(根据某些条件定义一个lambda函数):
auto update;
if(condition)
{
update = [this]() {this->someField += 1;};
}
else
{
update = [this]() {this->someField -= 1;};
}
update();
Run Code Online (Sandbox Code Playgroud)
它真的可能以这种或那种方式存在吗?gcc-4.8对此代码的错误是
error: declaration of ‘auto update’ has no initializer
Run Code Online (Sandbox Code Playgroud)
这是不可能的,因为auto变量需要一个初始化表达式来推断出类型,但你可以将update声明为std::function:
std::function<void()> update;
...
Run Code Online (Sandbox Code Playgroud)