我想做这样的事情(根据某些条件定义一个 lambda 函数):
auto update;
if(condition)
{
update = [this]() {this->someField += 1;};
}
else
{
update = [this]() {this->someField -= 1;};
}
update();
这真的有可能吗?此代码的 gcc-4.8 错误是
error: declaration of ‘auto update’ has no initializer
最佳答案
这是不可能的,因为 auto
变量需要一个初始化表达式来推断类型,但您可以将更新声明为 std::function
。 :
std::function<void()> update;
...
关于c++11 - 声明后定义lambda函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23634924/