vso*_*tco 7 c++ move-semantics c++11
我意识到"你不能移动const对象"的常识并不完全正确.如果你宣布移动ctor为,你可以
X(const X&&);
Run Code Online (Sandbox Code Playgroud)
完整示例如下:
#include <iostream>
struct X
{
X() = default;
X(const X&&) {std::cout << "const move\n";}
};
int main()
{
const X x{};
X y{std::move(x)};
}
Run Code Online (Sandbox Code Playgroud)
问:有什么理由让人想要这样的事吗?任何有用/实用的场景?
你的例子并不能改变任何事情。是的,您编写了std::move一个右值并调用了一个移动构造函数,但实际上最终没有任何内容被移动。但它不能,因为该对象是const.
除非您感兴趣的成员被标记mutable,否则您将无法进行任何“移动”。因此,不存在有用的甚至可能的场景。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |