問題タブ [stdoptional]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::optional: 単純な値と ref 修飾された value() の効果的な違い
これは学術的な質問です。std::optional<T>
型にはT && value() &&
メソッドがあります。次の定義があります。
そして、次のプログラム:
オプション 1 とオプション 2 の間に意味のある違いはありますか? OPTION 1の場合、出力として指定されていない1
、または指定されていませんか? 0
私のテストによると、 has_value() は両方のケースで true のままでした。
value() &&
とで違いが生じる可能性のある状況はありstd::move
ますvalue()
か?
c++ - std::optional はどのように「例外により無価値」になることはありませんか?
std::variant
「例外による無価値」と呼ばれる状態に入ることができます。
私が理解しているように、これの一般的な原因は、移動割り当てが例外をスローした場合です。バリアントの古い値が存在することは保証されておらず、意図した新しい値も存在しません。
std::optional
ただし、そのような状態はありません。cppreference は大胆な主張をしています:
例外がスローされた場合、*this ... の初期化状態は変更されません。つまり、オブジェクトに値が含まれていた場合は、まだ値が含まれており、その逆も同様です。
std::optional
「例外による無価値」になることをどのように回避できstd::variant
ますか?
c++ - noexcept 関数の本体で std::optional を処理しても安全ですか?
私は std::optional を Maybe 型として使用したいのですが、それを使用して計算の潜在的な失敗を示すことができるかどうか心配しているため、空のオプションとして観察されます。
たとえば、次のことを考慮してください。
- これは計算を返すための効率的な手法ですか? 例外の肥大化を回避できますか?
- これにより問題が発生する可能性はありますか?