来自 ISO/IEC 14882:2011(E) (C++11) 的第 17.6.4.9 节:
以下每一项都适用于 C++ 标准库中定义的函数的所有参数,除非另有明确说明。
[snip]
— 如果函数参数绑定到右值引用参数,则实现可能假定此参数是对此参数的唯一引用。
该规范仅适用于标准库函数,但似乎右值引用的全部意义在于使这种假设成为可能。如果我有一个接受右值引用并将其传递给它的函数(通过临时或std::move
),那么实现是否可以合法地执行假设它是唯一的优化?如果没有,是否有任何实现这样做?