diff options
Diffstat (limited to 'libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp')
-rw-r--r-- | libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp b/libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp index 7ab828eb0bf..6d78de3a48b 100644 --- a/libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp +++ b/libcxx/test/std/utilities/variant/variant.variant/variant.status/index.pass.cpp @@ -10,14 +10,6 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 -// The following compilers don't consider a type an aggregate type (and -// consequently not a literal type) if it has a base class at all. -// In C++17, an aggregate type is allowed to have a base class if it's not -// virtual, private, nor protected (e.g. ConstexprTestTypes:::NoCtors). -// XFAIL: gcc-5, gcc-6 -// XFAIL: clang-3.5, clang-3.6, clang-3.7, clang-3.8 -// XFAIL: apple-clang-6, apple-clang-7, apple-clang-8.0 - // <variant> // template <class ...Types> class variant; @@ -33,14 +25,18 @@ #include "test_macros.h" #include "variant_test_helpers.hpp" + int main() { -#if TEST_STD_VER == 17 - { // This test does not pass on C++20 or later; see https://bugs.llvm.org/show_bug.cgi?id=39232 - using V = std::variant<int, ConstexprTestTypes::NoCtors>; + { + using V = std::variant<int, long>; constexpr V v; static_assert(v.index() == 0, ""); } -#endif + { + using V = std::variant<int, long>; + V v; + assert(v.index() == 0); + } { using V = std::variant<int, long>; constexpr V v(std::in_place_index<1>); |