Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
当强制 RVO 应用于延长临时生命周期的引用时会发生什么?
当用另一个延长临时生命周期的引用来初始化一个引用时 这个新引用不会扩展任何内容 但是 当强制 RVO 阻止引用被复制时会发生什么 考虑这个例子 在 gcc godbolt org 上运行 https gcc godbolt org z OY
c
languagelawyer
returnvalueoptimization
为什么 RVO 不应用于基类子对象初始化?
为什么移动构造函数是Base在继承的情况下是强制性的 class B 在下面的代码中 在 gcc 7 2 和 clang 4 0 中 我希望 C 17 中保证复制省略不需要它 就像组合的情况一样 class A struct Base Ba
c
C17
returnvalueoptimization
按const值返回会影响返回值优化吗? [复制]
这个问题在这里已经有答案了 考虑功能 const std string f return hello 还有那通电话 std string x f 无论值返回类型是否应为 const 返回值是 const 的事实是否会阻止编译器执行返回值优化
c
returnvalueoptimization
rvo
我可以在 Rust 中有效地按值返回对象吗?
我想用函数初始化一个大对象 目前我有 fn initialize mydata mut Vec
Optimization
Rust
returnvalueoptimization
禁用一个函数的返回值优化
struct X void a void b X foo void u void v foo 在汇编器中实现 i386 X 类型的返回值的地址作为隐藏参数传递给 foo 如果使用 O0 编译测试代码 则代码将按预期工作 如果使用 O3 编译
c
Assembly
returnvalueoptimization
rvo
nrvo
返回局部变量的 std::move [重复]
这个问题在这里已经有答案了 让有一个班级A使用移动构造函数 考虑一下 A get A a return std move a later in the code A aa get 这里显式调用std move强制移动构造函数A因此 它可能会
c
C11
movesemantics
returnvalueoptimization
在多个 return 语句的情况下,使用 `std::move` 返回是否明智?
我知道返回通常不是一个好主意std move i e bigObject foo bigObject result return std move result 而不是简单地 bigObject foo bigObject result r
c
C11
movesemantics
returnvalueoptimization
为什么返回参数时不允许使用 RVO?
C 11 12 8 31 中有说明 这种复制 移动操作的省略 称为复制省略 是允许的 在具有类返回类型的函数的 return 语句中 当表达式是非易失性自动对象的名称时 除了函数或 catch 子句参数之外 与函数返回类型具有相同的 cv
c
languagelawyer
copyelision
returnvalueoptimization
为什么不调用复制构造函数?
在此代码中 include
c
reference
constructor
copyconstructor
returnvalueoptimization
禁用 g++ 的返回值优化
我需要在命令行上使用什么标志来禁用 g 编译器自动启用的返回值优化 fno elide constructors C 标准允许实现省略创建临时对象 该临时对象仅用于初始化相同类型的另一个对象 指定此选项会禁用该优化 并强制 G 在所有情况下
c
Optimization
compilerconstruction
g
returnvalueoptimization
为什么按值参数被排除在 NRVO 之外?
Imagine S f S a return a 为什么不允许别名a和返回值槽 S s f t S s t can t generally transform it to this 如果以下情况的复制构造函数 规范不允许进行此转换 S有副作
c
C11
returnvalueoptimization
在 C++ 中,从函数返回向量仍然是不好的做法吗?
简洁版本 在许多编程语言中 返回大型对象 例如向量 数组 是很常见的 如果类有移动构造函数 这种风格现在在 C 0x 中是否可以接受 或者 C 程序员是否认为它很奇怪 丑陋 令人厌恶 长版 在 C 0x 中 这仍然被认为是不好的形式吗 st
c
C11
codingstyle
returnvalueoptimization
c++11 返回值优化还是移动? [复制]
这个问题在这里已经有答案了 我不明白什么时候应该使用std move当我应该让编译器优化时 例如 using SerialBuffer vector lt unsigned char gt let compiler optimize it
c
C11
movesemantics
returnvalueoptimization
RVO 应何时启动?
从下面的代码来看 如果发生了RVO 我希望看到2个地址指向同一位置 但事实并非如此 我的编译器是MS VC9 0 include
c
returnvalue
returnvalueoptimization
std::move 和 RVO 优化
我最近读过如何std move可以通过仅移动值而不是复制它们来加速代码 所以我做了一个测试程序来比较速度std vector 代码 include
c
C11
Optimization
visualstudio2015
returnvalueoptimization