From 954014a0fac4feb14e77eaa0b95d96f8095383b2 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Thu, 27 Jun 2019 18:40:55 +0000 Subject: Add a missing '__uncvref_t' to the SFINAE constraints for optional's assignment operator. Fixes PR38638. Thanks to Jonathan Wakely for the report llvm-svn: 364574 --- .../optional.object.assign/assign_value.pass.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libcxx/test/std/utilities/optional') diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp index 8d2a8a00c94..3dd28ace26f 100644 --- a/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp +++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp @@ -241,6 +241,16 @@ enum MyEnum { Zero, One, Two, Three, FortyTwo = 42 }; using Fn = void(*)(); +// https://bugs.llvm.org/show_bug.cgi?id=38638 +template +constexpr T pr38638(T v) +{ + std::optional o; + o = v; + return *o + 2; +} + + int main(int, char**) { test_sfinae(); @@ -269,5 +279,7 @@ int main(int, char**) } test_throws(); + static_assert(pr38638(3) == 5, ""); + return 0; } -- cgit v1.2.3