为什么 T&& 的行为不像右值引用?
使用 void f(T&&) 和 void f(T& 等函数重载时),令人惊讶的是,当传入 T&& 时会调用 f(T&),尽管反之则不然。这是由于 C 中右值引用的行为造成的。
与直觉相反,T&& 不仅仅是一个右值引用。它是右值引用类型,这意味着它只能绑定到右值,但在其他方面的行为类似于右值引用类型的左值。这种绑定行为确保没有名称的对象和即将失去名称的对象自动被视为右值。
但是,由于 T&& 有名称(即 t),因此它被视为左值,因此调用 f( T&) 过载。使用 f(static_cast
总而言之,管理此行为的 C 规则是:
以上是为什么 `T&&` 的行为并不总是像真正的右值引用?的详细内容。更多信息请关注PHP中文网其他相关文章!