在 C 中,人们可能会质疑对 const 对象的右值引用的实用性。为了更深入地研究这个主题,让我们分析这个问题:“假设 Foo 是一个类类型,const Foo& & 是否有优势?”
令人惊讶的是,const 右值引用提供了明显的好处。 C 0x 草案本身在以下代码中举例说明了它们的用法:
template <class T> void ref(const T& &) = delete; template <class T> void cref(const T& &) = delete;
这些重载有效地防止其他函数(例如 ref(T&) 或 cref(const T&))绑定到右值对象。这保证了这些函数的预期行为。
在未公开发布的官方标准文档 N3290 中,第 20.8 节中存在相同的代码:
template <class T> void ref(const T& &) = delete; template <class T> void cref(const T& &) = delete;
此外,在在最新的草案 N3485 中,这些 const 右值引用重载仍然出现在第 20.8 节中,强调了它们的持续存在
因此,虽然人们一开始可能认为 const 右值引用缺乏实用性,但它们在 C 标准和其他上下文中的实际应用强调了它们的重要性。
以上是`const Foo&&` 右值引用在 C 中什么时候有用?的详细内容。更多信息请关注PHP中文网其他相关文章!