mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 01:18:52 +08:00
Revert r372777: [libc++] Implement LWG 2510 and its follow-ups
This also reverts: - r372778: [libc++] Implement LWG 3158 - r372782: [libc++] Try fixing tests that fail on GCC 5 and older - r372787: Purge mentions of GCC 4 from the test suite Reason: the change breaks compilation of LLVM with libc++, for details see http://lists.llvm.org/pipermail/libcxx-dev/2019-September/000599.html git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@372832 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// UNSUPPORTED: c++98, c++03
|
||||
|
||||
// <tuple>
|
||||
|
||||
// template <class... Types> class tuple;
|
||||
|
||||
// template <class Alloc>
|
||||
// explicit(see-below) tuple(allocator_arg_t, const Alloc& a);
|
||||
|
||||
// Make sure we get the explicit-ness of the constructor right.
|
||||
// This is LWG 3158.
|
||||
|
||||
#include <tuple>
|
||||
#include <memory>
|
||||
|
||||
|
||||
struct ExplicitDefault { explicit ExplicitDefault() { } };
|
||||
|
||||
std::tuple<ExplicitDefault> explicit_default_test() {
|
||||
return {std::allocator_arg, std::allocator<int>()}; // expected-error {{chosen constructor is explicit in copy-initialization}}
|
||||
}
|
||||
|
||||
int main(int, char**) {
|
||||
return 0;
|
||||
}
|
@@ -13,7 +13,7 @@
|
||||
// template <class... Types> class tuple;
|
||||
|
||||
// template <class Alloc>
|
||||
// explicit(see-below) tuple(allocator_arg_t, const Alloc& a);
|
||||
// tuple(allocator_arg_t, const Alloc& a);
|
||||
|
||||
// NOTE: this constructor does not currently support tags derived from
|
||||
// allocator_arg_t because libc++ has to deduce the parameter as a template
|
||||
|
@@ -1,53 +0,0 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// UNSUPPORTED: c++98, c++03
|
||||
|
||||
// Before GCC 6, aggregate initialization kicks in.
|
||||
// See https://stackoverflow.com/q/41799015/627587.
|
||||
// UNSUPPORTED: gcc-5
|
||||
|
||||
// <tuple>
|
||||
|
||||
// template <class... Types> class tuple;
|
||||
|
||||
// explicit(see-below) constexpr tuple();
|
||||
|
||||
#include <tuple>
|
||||
|
||||
|
||||
struct Implicit {
|
||||
Implicit() = default;
|
||||
};
|
||||
|
||||
struct Explicit {
|
||||
explicit Explicit() = default;
|
||||
};
|
||||
|
||||
std::tuple<> test1() { return {}; }
|
||||
|
||||
std::tuple<Implicit> test2() { return {}; }
|
||||
std::tuple<Explicit> test3() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
|
||||
std::tuple<Implicit, Implicit> test4() { return {}; }
|
||||
std::tuple<Explicit, Implicit> test5() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Implicit, Explicit> test6() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Explicit, Explicit> test7() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
|
||||
std::tuple<Implicit, Implicit, Implicit> test8() { return {}; }
|
||||
std::tuple<Implicit, Implicit, Explicit> test9() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Implicit, Explicit, Implicit> test10() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Implicit, Explicit, Explicit> test11() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Explicit, Implicit, Implicit> test12() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Explicit, Implicit, Explicit> test13() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Explicit, Explicit, Implicit> test14() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
std::tuple<Explicit, Explicit, Explicit> test15() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
|
||||
|
||||
int main(int, char**) {
|
||||
return 0;
|
||||
}
|
@@ -10,7 +10,7 @@
|
||||
|
||||
// template <class... Types> class tuple;
|
||||
|
||||
// explicit(see-below) constexpr tuple();
|
||||
// constexpr tuple();
|
||||
|
||||
// UNSUPPORTED: c++98, c++03
|
||||
|
||||
|
@@ -14,6 +14,7 @@
|
||||
// struct tuple_size<tuple<Types...>>
|
||||
// : public integral_constant<size_t, sizeof...(Types)> { };
|
||||
|
||||
// XFAIL: gcc-4.9
|
||||
// UNSUPPORTED: c++98, c++03
|
||||
|
||||
#include <tuple>
|
||||
|
@@ -14,6 +14,7 @@
|
||||
// class tuple_size<tuple<Types...>>
|
||||
// : public integral_constant<size_t, sizeof...(Types)> { };
|
||||
|
||||
// XFAIL: gcc-4.9
|
||||
// UNSUPPORTED: c++98, c++03
|
||||
|
||||
#include <tuple>
|
||||
|
Reference in New Issue
Block a user