gpt4 book ai didi

c++ - 如何从 lambda-functor 的主体中增加一个变量?

转载 作者:可可西里 更新时间:2023-11-01 17:15:47 24 4
gpt4 key购买 nike

我试图从 lambda 表达式中增加一个局部变量:

#include <iostream>

template<typename T>
T foo(T t){
T temp{};
[temp]() -> void {
temp++;
}();
return temp;
}

int main()
{
std::cout<< foo(10) << std::endl;
}

DEMO

但是出现如下错误:

main.cpp: In instantiation of 'foo(T)::<lambda()> [with T = int]':

main.cpp:6:6: required from 'struct foo(T) [with T = int]::<lambda()>'

main.cpp:8:6: required from 'T foo(T) [with T = int]'

main.cpp:14:23: required from here

main.cpp:7:13: error: increment of read-only variable 'temp'

temp++;

^

在 c++11/14 中是否有一些解决方法?

最佳答案

temp 在非可变 lambda 中通过拷贝捕获时无法修改。

您可以通过引用捕获 temp:

template<typename T>
T foo(T t){
T temp{};
[&temp]() -> void {
temp++;
}();
return temp;
}

关于c++ - 如何从 lambda-functor 的主体中增加一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com