C++ 14使用capture-specifier在lambda函数内增加一个值

kbe*_*nda 6 c++ lambda c++14

我的任务是编写一个增加值的lambda函数,但我必须使用value = 0 capture-specifier.我正在考虑以下功能:

auto lambda = [value = 0]{return ++value}
Run Code Online (Sandbox Code Playgroud)

调用此函数时,每次都必须给出递增的值.但我知道这个实现是错误的,因为它是通过值传递的.我怎么能用C++ 14做到这一点?

Ric*_*ges 14

你需要使lambda变为可变:

auto lambda = [value = 0]() mutable {return ++value;};
Run Code Online (Sandbox Code Playgroud)