该标准是否提供了有关从基本类型迁移的任何保证
Does the standard give any guarantees about moving from fundamental types?
标准是否保证从基本数据类型迁移?
int i = 42;
int j = std::move(i);
// what can we say about i here?
合理的选择是保持移自值不变或将其设置为零?
显然,上面的代码本身没有什么意义,但想想模板。
内置的
=
运算符,当用作a = b
时,具有读取b
值并将其存储在a
中的长期行为。标准中没有任何内容表明整数赋值会修改赋值 RHS。
5.17 赋值和复合赋值运算符 [expr.ass]
。
2 在简单赋值(
=
)中,表达式的值替换了左操作数所指对象的值。
没有提到更改任何其他对象的任何值,因此不得更改其他对象的值。
重载的自定义operator=
实现的行为可能不同,许多标准库类型实际上使其行为不同,但这不会影响为语言的内置=
运算符提供的保证。
POD 并没有真正移动,它们会复制
(或者,它们的复制和移动是相同的操作,因为在这种情况下没有什么可以真正"移动"的) - 见这里。
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 该标准是否提供了有关从基本类型迁移的任何保证
- 将C++代码从 VS2003 迁移到 VS2010 后出现错误 C2678,错误 C2679:二进制'=':未找到采用类型为 'int' 的右侧操作数的运算符
- C++代码迁移.方法实现一直说缺少类型