声明后定义lambda函数?

ert*_*ion 2 lambda c++11

我想做这样的事情(根据某些条件定义一个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)

Som*_*ude 5

这是不可能的,因为auto变量需要一个初始化表达式来推断出类型,但你可以将update声明为std::function:

std::function<void()> update;
...
Run Code Online (Sandbox Code Playgroud)