diff options
Diffstat (limited to 'test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp')
-rw-r--r-- | test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp index 18216c6da923d..a695df14ef62a 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp @@ -10,6 +10,13 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 + // <variant> // template <class ...Types> class variant; @@ -21,6 +28,7 @@ #include <variant> #include "test_macros.h" +#include "test_workarounds.h" struct NonT { NonT(int v) : value(v) {} @@ -137,14 +145,21 @@ constexpr bool test_constexpr_copy_ctor_extension_imp( auto v2 = v; return v2.index() == v.index() && v2.index() == Idx && - std::get<Idx>(v2) == std::get<Idx>(v); + std::get<Idx>(v2) == std::get<Idx>(v); } void test_constexpr_copy_ctor_extension() { -#ifdef _LIBCPP_VERSION +#if defined(_LIBCPP_VER) || defined(_MSVC_STL_VER) using V = std::variant<long, void*, const int>; - static_assert(std::is_trivially_copyable<V>::value, ""); +#ifdef TEST_WORKAROUND_C1XX_BROKEN_IS_TRIVIALLY_COPYABLE + static_assert(std::is_trivially_destructible<V>::value, ""); static_assert(std::is_trivially_copy_constructible<V>::value, ""); + static_assert(std::is_trivially_move_constructible<V>::value, ""); + static_assert(!std::is_copy_assignable<V>::value, ""); + static_assert(!std::is_move_assignable<V>::value, ""); +#else + static_assert(std::is_trivially_copyable<V>::value, ""); +#endif static_assert(test_constexpr_copy_ctor_extension_imp<0>(V(42l)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<1>(V(nullptr)), ""); static_assert(test_constexpr_copy_ctor_extension_imp<2>(V(101)), ""); |