diff options
Diffstat (limited to 'toolsrc/src/vcpkg-test/optional.cpp')
| -rw-r--r-- | toolsrc/src/vcpkg-test/optional.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg-test/optional.cpp b/toolsrc/src/vcpkg-test/optional.cpp index f3c61387f..520867f2c 100644 --- a/toolsrc/src/vcpkg-test/optional.cpp +++ b/toolsrc/src/vcpkg-test/optional.cpp @@ -58,6 +58,27 @@ TEST_CASE ("ref conversion", "[optional]") REQUIRE(cref_1.get() == &x); } +TEST_CASE ("value conversion", "[optional]") +{ + using vcpkg::Optional; + + Optional<long> j = 1; + Optional<int> i = j; + Optional<const char*> cstr = "hello, world!"; + Optional<std::string> cppstr = cstr; + + std::vector<int> v{1, 2, 3}; + Optional<std::vector<int>&> o_v(v); + REQUIRE(o_v.has_value()); + REQUIRE(o_v.get()->size() == 3); + Optional<std::vector<int>> o_w(std::move(o_v)); + REQUIRE(o_w.has_value()); + REQUIRE(o_w.get()->size() == 3); + // Moving from Optional<&> should not move the underlying object + REQUIRE(o_v.has_value()); + REQUIRE(o_v.get()->size() == 3); +} + TEST_CASE ("common_projection", "[optional]") { using vcpkg::Util::common_projection; |
