aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg-test/optional.cpp
diff options
context:
space:
mode:
authorras0219 <533828+ras0219@users.noreply.github.com>2020-10-06 12:06:26 -0700
committerGitHub <noreply@github.com>2020-10-06 12:06:26 -0700
commit8fe1851e1eb51a971b2b7cfdb8161ac03bbbd6d5 (patch)
treebe0a98124bdd9702c32692caa58a5ff76b4ae8ad /toolsrc/src/vcpkg-test/optional.cpp
parent587dc2ed881b885f715fae623e6fee96ce526fe4 (diff)
downloadvcpkg-8fe1851e1eb51a971b2b7cfdb8161ac03bbbd6d5.tar.gz
vcpkg-8fe1851e1eb51a971b2b7cfdb8161ac03bbbd6d5.zip
[vcpkg] Enable reentrant vcpkg calls (#13751)
* [vcpkg] Enable recursive vcpkg calls Via envvars VCPKG_COMMAND and VCPKG_X_RECURSIVE_DATA. Child processes can call vcpkg via "$VCPKG_COMMAND <args>" in limited internal circumstances. * [vcpkg] Address CR comments * [vcpkg] Do not move through Optional<&> into Optional<T> Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Diffstat (limited to 'toolsrc/src/vcpkg-test/optional.cpp')
-rw-r--r--toolsrc/src/vcpkg-test/optional.cpp21
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;