gpt4 book ai didi

c++ - 在不捕获的情况下访问 lambda 表达式中的 constexpr 变量

转载 作者:IT老高 更新时间:2023-10-28 12:39:34 24 4
gpt4 key购买 nike

在以下示例中,我可以从 lambda y 内部访问 constexpr 变量 x 而无需显式捕获它。如果 x 未声明为 constexpr,则这是不可能的。

是否有适用于 constexpr 进行捕获的特殊规则?

int foo(auto l) {
// OK
constexpr auto x = l();
auto y = []{return x;};
return y();

// NOK
// auto x2 = l();
// auto y2 = []{ return x2; };
// return y2();
}

auto l2 = []{return 3;};

int main() {
foo(l2);
}

最佳答案

Are there special rules that apply to constexpr for capturing/accessing?

是的,constexpr 变量可以在不捕获 lambda 的情况下被读取:

A lambda expression can read the value of a variable without capturing it if the variable

  • has const non-volatile integral or enumeration type and has been initialized with a constant expression, or
  • is constexpr and trivially copy constructible.

关于c++ - 在不捕获的情况下访问 lambda 表达式中的 constexpr 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50247190/

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