- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
来 self 的 C++ 标准拷贝 [§27.8.2.1p4]:
basic_stringbuf(basic_stringbuf&& rhs);
Effects: Move constructs from the rvalue rhs. It is implementation-defined whether the sequence pointers in *this (eback(), gptr(), egptr(), pbase(), pptr(), epptr()) obtain the values which rhs had. Whether they do or not, *this and rhs reference separate buffers (if any at all) after the construction. The openmode, locale and any other state of rhs is also copied.
basic_filebuf(basic_filebuf&& rhs);
也有类似的句子。
问题
我想知道为什么这是实现定义的?您可能不想复制指针有什么原因吗?
最佳答案
有两种明显的实现技术来处理标准流缓冲区中的缓冲区:
根据缓冲区所在位置的实现选择,您将需要一组新的指针值,或者您将希望按原样继承指针。这两种策略都不是“更好”的,我也可以想象结合这些策略的变化。因此,实现可以选择而不是做出选择。如果您的问题是为什么实现应该 [忘记] 记录它所做的选择:那显然超出了我的范围。我个人的猜测是假设阶段“是实现定义的”将提供选择的自由,而忽略了实现需要说明其选择的含义(因为有关于引号的辩论:1.3.10 [defns.impl.defined] - 奇怪的是没有段落编号)。
关于c++ - 为什么 basic_stringbuf 和 basic_filebuf 移动构造函数具有实现定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169344/
以下代码编译失败: #include #include int main() { std::ostrstream strm; strm.
来 self 的 C++ 标准拷贝 [§27.8.2.1p4]: basic_stringbuf(basic_stringbuf&& rhs); Effects: Move constructs fr
我是一名优秀的程序员,十分优秀!