「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > `std::optional` が参照型をサポートしないのはなぜですか?

`std::optional` が参照型をサポートしないのはなぜですか?

2024 年 11 月 12 日に公開
ブラウズ:650

 Why Doesn\'t `std::optional` Support Reference Types?

オプションの参照型: std::optional と代替に存在しない理由

標準ライブラリの std::optional クラス、std として存在libc の ::experimental::optional には、特に参照型の特殊化が欠けています。このため、そのような特殊化が有益かどうかという疑問が生じます。

オプションの参照型の利点

オプションの参照型には、次のような利点があります。

  • 効率: 一般に参照はコピーよりも効率的で、メモリ使用量とパフォーマンスのオーバーヘッドが削減される可能性があります。
  • 式の簡潔さ: 参照型は、明示的なアンラップなしで直接逆参照できるため、オプションのオブジェクトに関係する式を簡素化します。

不在の根拠

これらの潜在的な利点にもかかわらず、std::optional には現在、参照型の特殊化が欠けています。その理由は、標準化プロセス中の議論にあります。

委員会のメンバーは、オプションの参照のセマンティクスに関して懸念を表明しました。彼らは、オプションの参照がすでに破棄されているか無効なオブジェクトを参照している可能性があるため、オブジェクトの有効期間と所有権に関連する潜在的な問題を懸念していました。

代替オプション

標準時: :optional は参照型には対応しません。標準ライブラリは代替ソリューションを提供します:

  • Optional Values: std::optional は値の型に特化し、値を表す機能を提供します。
  • std::reference_wrapper: このクラスを使用すると、元のオブジェクトの参照を超えて存続する参照を作成できます。ただし、 std::optional.
の「存在する可能性がある」セマンティクスはありません。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3