gpt4 book ai didi

c++ - C++20 中弃用的 lambda 捕获

转载 作者:太空狗 更新时间:2023-10-29 21:10:29 24 4
gpt4 key购买 nike

正如论文 P0409R2 中提出的那样

我期望 x 的定义从 C++20 中被弃用并且无法编译,但它似乎在 g++ (GCC) 8.1.0 中有效,有人知道我是否做错了什么吗?

在 Visual Studio 2017 中,由于 y 的定义存在错误而无法编译。error C3791: 默认捕获模式为复制时无法显式捕获“this”(=)

Live Code

#include <iostream>

struct X {
void f()
{
int value = 3;

auto x = [=] { // Deprecated from C++20:
return value + g();
};

auto y = [=, this] { // Recommended method from C++20:
return value + g(); // [=] The this pointer will not be captured, so capture with specifying this
};
}

int g() const
{
return 2;
}
};

int main()
{
X().f();
}

最佳答案

提案并不意味着采纳。也就是说,通读措辞和示例,它指出:

 [=, this]{ };      // OK, equivalent to [=]

这似乎表明 x 是允许的。我也没有看到明确提到这个被弃用。它甚至提到了相反的内容:

We will not consider deprecation in the following survey, since we are only interested in exploring the long-term direction, and deprecation without direction is not all that interesting.

关于c++ - C++20 中弃用的 lambda 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060011/

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