C++14 使用捕获说明符递增 lambda 函数内部的值

C++14 increment a value inside of lambda function with capture-specifier

本文关键字:函数 lambda 内部 说明符 C++14      更新时间:2023-10-16

我的任务是编写一个递增值的lambda函数,但我必须使用value = 0捕获说明符。我正在考虑以下功能:

auto lambda = [value = 0]{return ++value}

调用此函数时,它每次都必须给出一个递增的值。但我知道这种实现是错误的,因为它是按值传递的。如何在 C++14 中执行此操作?

你需要使lambda可变:

auto lambda = [value = 0]() mutable {return ++value;};

你不需要捕获:

[]{ static int i=0; return ++i; }

是你所需要的一切。