diff options
Diffstat (limited to 'libcxx/test/std/utilities')
-rw-r--r-- | libcxx/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp b/libcxx/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp index 55f8d11c115..ef074828581 100644 --- a/libcxx/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp +++ b/libcxx/test/std/utilities/variant/variant.variant/variant.ctor/T.pass.cpp @@ -177,10 +177,22 @@ void test_T_ctor_basic() { #endif } +struct BoomOnInt { + template <class T> + constexpr BoomOnInt(T) { static_assert(!std::is_same<T, int>::value, ""); } +}; + +void test_no_narrowing_check_for_class_types() { + using V = std::variant<int, BoomOnInt>; + V v(42); + assert(v.index() == 0); + assert(std::get<0>(v) == 42); +} + int main(int, char**) { test_T_ctor_basic(); test_T_ctor_noexcept(); test_T_ctor_sfinae(); - + test_no_narrowing_check_for_class_types(); return 0; } |