16得票6回答
C++返回值优化

这段代码:#include <vector> std::vector<float> getstdvec() { std::vector<float> v(4); v[0] = 1; v[1] = 2; v[2] = 3; ...

16得票1回答
我能否在Rust中高效地通过值返回一个对象?

我想用一个函数来初始化一个大对象。目前我有:fn initialize(mydata: &mut Vec<Vec<MyStruct>>) { /* ... */ } 我更喜欢有:fn initialize() -> Vec<Vec<MyStru...

15得票3回答
C++:编译器能优化传值操作吗?

一个常见的编译器优化是所谓的返回值优化。这种优化基本上允许编译器不复制从函数返回的本地变量,而是将其移动。然而,我在想如果对于按值传递参数到函数中,如果已知函数的返回值将覆盖原始参数,是否也可以做到同样的优化。以下是一个示例。假设我们有以下函数:std::vector<Foo> m...

15得票1回答
为什么在最简单的代码上,Visual C++没有执行返回值优化?

Visual C++是否不执行返回值优化?#include <cstdio> struct Foo { ~Foo() { printf("Destructing...\n"); } }; Foo foo() { return Foo(); } int main() { foo();...

14得票2回答
C++编译器是否会通过“引用”优化未使用的返回值?

如果有人说“优化前先分析性能瓶颈”,请先别急,这只是一个好奇的问题,源自于这个原始问题。 假设我通过引用返回了同一对象,如果不使用该对象,那么它会被优化掉吗?例如,我有一个 Vector<>,其中包含各种数学函数(假设我没有使用运算符重载)。可以用两种方式写:inline voi...

14得票1回答
为什么RVO要求如此严格?

又一个关于“为什么必须使用std :: move防止(未命名的)返回值优化?”的问题: 为什么std :: move会防止RVO?解释了标准明确要求函数声明的返回类型必须与return语句中表达式的类型相匹配。这解释了符合规范的编译器的行为;但是,它并不能解释限制的原理。 为什么RVO的规...

12得票1回答
C++编译器能否对const返回值执行RVO优化?

假设我有以下函数: #include <string> std::string const foo() { std::string s = "bar"; return s; } int main() { std::string t = foo(); }...

12得票3回答
如何在Visual Studio 2010中禁用返回值优化?

在Visual Studio 2010中是否可以禁用RVO (return value optimization)?将优化标志设置为/Od(关闭所有优化)并不能解决问题。在g ++中存在标志-fno-elide-constructors,可用于禁用RVO。

12得票2回答
返回不可复制常量值的函数的非直观RVO?

考虑以下C++ >=17的示例代码: struct A{ A() = default; A(const A&) = delete; }; const A f(){ return A{}; } int main(){ const A& a = ...

11得票1回答
为什么不调用复制构造函数?

在这段代码中:#include <iostream> using std::cout; class Foo { public: Foo(): egg(0) {} Foo(const Foo& other): egg(1) {} ...