在对象上调用std::move
后,如果之后使用该对象,为什么语言不引起编译错误?
是否因为编译器无法检测到这种情况?
最佳答案
C++语言设计的一般原则是“信任程序员”。在成为std::move
的参数之后,拒绝使用该对象时,我会想到一些问题。
std::move
之后,将等同于解决暂停问题。 (换句话说,这无法完成。)您将不得不提出一些规则,这些规则以可以静态确定的方式描述“之后”的含义。 std::move
作为参数是完全安全的。 (一个特定的类可能会引起一个断言,但这将是一个非常奇怪的设计。)关于c++ - 在std::move之后使用对象不会导致编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42795683/