c++11 - 声明后定义lambda函数?

标签 c++11 lambda

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

相关文章:

c++ - 没有数据成员和大括号语法的类的默认复制构造函数

c++ - Constexpr 指针值

c# - 从 lambda 表达式访问属性的 HtmlHelper 方法之间的区别

c++ - Valgrind 将此检测为可能的内存泄漏

c++ - for循环的范围内是什么类型?

java - 在返回之前在收集流中过滤收集流

ruby - 在 Ruby 中使用带有参数的 procs/lambdas

c++ - 将带有存储在 std::function 中的捕获子句的 lambda 转换为原始函数指针

c++ - 如何将 [[nodiscard]] 属性应用于 lambda?

c++ - 如何使用 Boost d_ary_heap?