如果不允许重新分配,则该成员函数在标准(仅备注)中没有明确的效果,将限制使用.但我在标准中找到的唯一似乎适用的段落是23.2.1/11:
"除非另有说明(显式或通过根据其他函数定义函数),调用容器成员函数或将容器作为参数传递给库函数不应使迭代器无效或更改其中的对象的值.容器."
由于重新分配使迭代器无效,这是否意味着shrink_to_fit无法正式重新分配?如果是这样,该函数只能对减少容量不重新分配的实现有效,如果有的话......
在研究内容时exception_ptr,C++ 11标准说(18.8.5/7):
在引用同一异常对象的exception_ptr对象上使用rethrow_exception不应引入数据争用.[注意:如果rethrow_exception重新抛出相同的异常对象(而不是副本),对该重新抛出的异常对象的并发访问可能会引入数据争用......
我没有找到这种奇怪的"注释"适用的情况,因为所描述的效果rethrow_exception是"抛出:p引用的异常对象"但是15.1/3,描述了抛出异常副本的一般异常抛出过程强制要求 - 初始化一个临时对象,称为异常对象."
奇怪的说明意味着rethrow_exception会跳过此复制初始化.但这真的有可能吗?