问题标签 [rvalue-reference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - std::forward 的结构
我真的很好奇 - 为什么std::forward
需要显式模板参数?难道不能简单
如果可能的话,我真的很喜欢所有相关的细节,而不是简化。
c++ - 为什么有些人使用交换进行移动任务?
例如,stdlibc++ 有以下内容:
为什么不直接将两个 __u 成员分配给 *this 呢?交换是否暗示 __u 被分配了 *this 成员,只是后来分配了 0 和 false ......在这种情况下,交换正在做不必要的工作。我错过了什么?(unique_lock::swap 只是对每个成员执行 std::swap )
c++ - 在 C++0x 中传递/移动构造函数的参数
如果我有一个带有 n 个参数的构造函数,那么任何参数都可以是右值和左值。是否可以通过右值的移动语义来支持这一点,而无需为每个可能的右值/左值组合编写 2^n 构造函数?
c++ - 移动语义——它的全部内容是什么?
可能重复:
有人可以向我解释一下移动语义吗?
有人可以指出一个好的来源或在这里解释什么是移动语义?
c++ - 在可移动和不可复制的类上使用移动和交换习语是否有意义
如果我有一堂课,比如
如果我没有复制构造函数,按值实现 operator= 并交换是否有意义?它应该防止复制我的类对象,Foo
但允许移动。
这个类是不可复制的,所以我不应该能够复制构造或复制分配它。
编辑
我已经用这个测试了我的代码,它似乎有我想要的行为。
c++ - 右值引用和完美转发
我读过几篇关于 && 的论文,我只是好奇是否有:
或者只是通过'r'就足够了?
rvalue-reference - RValue 引用的元组
下面的一段代码
我希望,在离开中间范围时,向量会破坏并尝试破坏 conatain 中的元组。这反过来破坏了 A 的对象,但有些我看不到任何对象被破坏。Valgrind 也没有显示任何内存错误。以下是使用 valgrind $valgrind ./a.out 运行时的输出
我显然在这里遗漏了一些东西。如果在中间范围内对“get()”的调用确实返回了适当的值(100 和 200),为什么在向量(和元组)被破坏时不调用“A”的析构函数?
[编辑] @Howard Hinnant:谢谢,这很有意义。我不明白的是:1)当我用右值构造一个元组并将其推送到向量时,我确实得到了 valgrind 内存错误。例如。
在最里面的范围内并添加:
到上述示例中的中间范围会产生 valgrind 内存错误,但不会产生上面显示的左值引用。
2) 有人能解释一下为什么下面的语句调用了一个 copu 构造函数和一个直接析构函数吗?
c++ - 是否需要销毁移出的对象?
如果我 move-construct a
from b
,是否仍然需要destruct b
,或者我可以不这样做就逃脱?
optional<T>
这个问题在模板的实现过程中闪过我的脑海。摘抄:
当然,我可以将 bool 替换为initialized
一个区分已初始化、未初始化和移出的三值枚举。我只想知道这是否是绝对必要的。
visual-studio-2010 - 模板类型推导问题
我有variant
课。它有一对构造函数:
现在我在这段代码中调用了这些构造函数:
symbol_type
将 avariant
作为此特定构造函数中的第二个参数,并且v
正在被隐式转换。
但是,MSVC 将尝试使用右值引用构造函数而不是使用其他构造函数,从而在尝试new
引用时导致编译错误。为什么会这样,我怎样才能让它停止?