C では、const オブジェクトへの右辺値参照の有用性を疑問視する人もいるかもしれません。このトピックをさらに深く掘り下げるために、「Foo がクラス型であると仮定して、const Foo& & が有利になるシナリオはありますか?」
驚くべきことに、const rvalue 参照には明確な利点があります。 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 rvalue 参照オーバーロードはセクション 20.8 にまだ存在しており、その継続を強調しています。
したがって、最初は const rvalue 参照には実用性がないと考えるかもしれませんが、C 標準やその他のコンテキスト内での実際のアプリケーションはその重要性を強調しています。
以上がC で `const Foo&&` 右辺値参照が役立つのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。