1

これは学術的な質問です。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()か?

4

4 に答える 4