これは学術的な質問です。std::optional<T>
型にはT && value() &&
メソッドがあります。次の定義があります。
class A { ... };
void f(A &&a);
そして、次のプログラム:
std::optional<A> optA;
optA = A(1337);
f(std::move(optA).value()); // OPTION 1
f(std::move(optA.value())); // OPTION 2
std::cout << optA.has_value() << std::endl;
オプション 1 とオプション 2 の間に意味のある違いはありますか? OPTION 1の場合、出力として指定されていない1
、または指定されていませんか? 0
私のテストによると、 has_value() は両方のケースで true のままでした。
value() &&
とで違いが生じる可能性のある状況はありstd::move
ますvalue()
か?