从我的 C++ 标准副本 [§27.8.2.1p4]:
basic_stringbuf(basic_stringbuf&& rhs);
效果:从右值 rhs 移动构造。*this (eback(), gptr(), egptr(), pbase(), pptr(), epptr()) 中的序列指针是否获得rhs 所具有的值是实现定义的。无论他们是否这样做,*this 和 rhs 在构造之后都会引用单独的缓冲区(如果有的话)。rhs 的 openmode、locale 和任何其他状态也会被复制。
类似的句子也用于basic_filebuf(basic_filebuf&& rhs);
。
问题
我想知道为什么这是实现定义的?您是否有理由不想复制指针?