【发布时间】:2011-11-16 06:57:01
【问题描述】:
C++11 §27.5.4.2/21:
void swap(basic_ios& rhs);效果:
*this和rhs的状态应该交换,除了rdbuf()应该返回与函数调用之前返回的值相同的值,rhs.rdbuf()应该返回与函数调用之前返回的值相同。
这种部分交换有什么用处?
会不会惹麻烦?
【问题讨论】:
-
Alf P. Steinbach 提出问题。逆天。 :|
-
这真是令人惊讶。如果我交换两件东西,我真的希望它们交换;如果我有一个错误并且发现它没有交换
rdbuf,我会认为这是一个实现错误。 -
确实令人惊讶。我检查了我拥有的第一个 FinalDraft (n3092),它完全一样。我想知道它在 C++03 中是否相同,也许是遗留遗留物?
-
这会使
swap与移动分配“不一致”吗?还是移动流也会留下缓冲区?如果不一致,那么如果有人在泛型代码中假设对于任何类型T,swap(t1,t2)的最终结果与T t3(move(t1)); t1 = move(t2); t2 = move(t3);的最终结果相同,则可能存在潜在问题。