为了移动构造而移动的对象处于只能被破坏的状态是否合法/正确的c ++ 0x?例如:
class move_constructible {...};
int main()
{
move_constructible x;
move_constructible y(std::move(x));
// From now on, x can only be destroyed. Any other method will result
// in a fatal error.
}
作为记录,我试图用一个指针成员包装一个 c++ 类 ac 结构,该指针成员总是应该指向一些分配的内存区域。所有的 c 库 API 都依赖于这个假设。但是这个要求阻止了编写一个真正便宜的移动构造函数,因为为了让 x 在移动后仍然是一个有效的对象,它需要自己分配的内存区域。我已经以这样一种方式编写了析构函数,它会在从 c API 调用相应的清理函数之前首先检查 NULL 指针,以便在移动后至少可以安全地销毁结构。