gpt4 book ai didi

c++ - Lambda 表达式和 RVO

转载 作者:行者123 更新时间:2023-11-30 01:46:26 25 4
gpt4 key购买 nike

“返回值优化”的概念是否适用于 C++ 编译器中的 lambda 表达式?我知道这取决于编译器和优化参数,但理论上可能吗?

顺便说一句,有人知道 VS.NET 2013 或更高版本中的这个问题吗?

最佳答案

是的,这是可能的。你可以用一个小例子来证明这一点。

当我使用带有 -O2 选项的 clang 和 g++ 编译时,以下代码产生了这个输出:

Ctor

因此,没有打印“copy”。这意味着没有复制发生。

#include <iostream>

class Test
{
public:
Test() { std::cout << "Ctor\n";}
Test(const Test& t)
{
std::cout << "copy" << std::endl;
}
};

int main()
{
auto myLambda = []()
{
return Test();
};

Test t = myLambda();
}

RVO 适用于函数的返回值。 lambda 被编译为仿函数。所以,它仍然是一个函数。

至于为什么在VS里不行,可能是这个post可以帮助你。

关于c++ - Lambda 表达式和 RVO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33212302/

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