From d3209f932f73087c33ccae4b7e7403ca4ad94d28 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Thu, 30 Mar 2017 19:43:50 +0000 Subject: Implement LWG 2842 - optional(U&&) needs to SFINAE on decay_t llvm-svn: 299100 --- .../optional.object/optional.object.ctor/U.pass.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libcxx/test/std/utilities/optional') diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp index 4020d70a46f..d068fbc2db7 100644 --- a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp +++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp @@ -35,6 +35,11 @@ struct ExplicitThrow constexpr explicit ExplicitThrow(int x) { if (x != -1) TEST_THROW(6);} }; +struct ImplicitAny { + template + constexpr ImplicitAny(U&&) {} +}; + template constexpr bool implicit_conversion(optional&& opt, const From& v) @@ -79,6 +84,15 @@ void test_implicit() using T = TestTypes::TestType; assert(implicit_conversion(3, T(3))); } + { + using O = optional; + static_assert(!test_convertible(), ""); + static_assert(!test_convertible(), ""); + static_assert(!test_convertible(), ""); + static_assert(!test_convertible(), ""); + static_assert(!test_convertible(), ""); + + } #ifndef TEST_HAS_NO_EXCEPTIONS { try { -- cgit v1.2.3