diff options
Diffstat (limited to 'libstdc++-v3/testsuite/20_util/optional/observers/4.cc')
-rw-r--r-- | libstdc++-v3/testsuite/20_util/optional/observers/4.cc | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/libstdc++-v3/testsuite/20_util/optional/observers/4.cc b/libstdc++-v3/testsuite/20_util/optional/observers/4.cc index c24e4e6856ec..5d608cdeaf73 100644 --- a/libstdc++-v3/testsuite/20_util/optional/observers/4.cc +++ b/libstdc++-v3/testsuite/20_util/optional/observers/4.cc @@ -26,10 +26,42 @@ struct value_type int i; }; -int main() +void test01() { std::optional<value_type> o { value_type { 51 } }; value_type fallback { 3 }; VERIFY( o.value_or(fallback).i == 51 ); VERIFY( o.value_or(fallback).i == (*o).i ); } + +void test02() +{ + std::optional<value_type> o; + value_type fallback { 3 }; + VERIFY( o.value_or(fallback).i == 3 ); +} + +void test03() +{ + std::optional<value_type> o { value_type { 51 } }; + value_type fallback { 3 }; + VERIFY( std::move(o).value_or(fallback).i == 51 ); + VERIFY( o.has_value() ); + VERIFY( std::move(o).value_or(fallback).i == (*o).i ); +} + +void test04() +{ + std::optional<value_type> o; + value_type fallback { 3 }; + VERIFY( std::move(o).value_or(fallback).i == 3 ); + VERIFY( !o.has_value() ); +} + +int main() +{ + test01(); + test02(); + test03(); + test04(); +} |