该标准是否精确定义了对象从对象移出后可以做什么?我曾经认为,对移出的对象可以做的只是破坏它,但这还不够。
例如,采用swap
标准库中定义的功能模板:
template <typename T>
void swap(T& a, T& b)
{
T c = std::move(a); // line 1
a = std::move(b); // line 2: assignment to moved-from object!
b = std::move(c); // line 3: assignment to moved-from object!
}
显然,必须可以将其分配给移出的对象,否则第2行和第3行将失败。那么我还能对移出的对象做什么呢?我在哪里可以在标准中找到这些详细信息?
(顺便说一句,为什么T c = std::move(a);
不是T c(std::move(a));
第1行呢?)
pop_back
迁移到vector
。但是您当然可以找出是否存在empty()
。