aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-09-24 13:21:34 +0100
committerJonathan Wakely <jwakely@redhat.com>2021-09-28 20:22:51 +0100
commit4000d722e609bbbb1e923721b54911bb784eeec3 (patch)
tree7e0fe4d60cee8f1d4e6d89e346c2c23065cdf7c0
parent45a8cd256934be3770f7e000db7b13f10eabee9a (diff)
downloadgcc-4000d722e609bbbb1e923721b54911bb784eeec3.zip
gcc-4000d722e609bbbb1e923721b54911bb784eeec3.tar.gz
gcc-4000d722e609bbbb1e923721b54911bb784eeec3.tar.bz2
libstdc++: Fix tests that use invalid types in ordered containers
Types used in ordered containers need to be comparable, or the container needs to use a custom comparison function. These tests fail when _GLIBCXX_CONCEPT_CHECKS is defined, because the element types aren't comparable. Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: * testsuite/20_util/is_nothrow_swappable/value.h: Use custom comparison function for priority_queue of type with no relational operators. * testsuite/20_util/is_swappable/value.h: Likewise. * testsuite/24_iterators/output/concept.cc: Add operator< to type used in set.
-rw-r--r--libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h4
-rw-r--r--libstdc++-v3/testsuite/20_util/is_swappable/value.h11
-rw-r--r--libstdc++-v3/testsuite/24_iterators/output/concept.cc2
3 files changed, 14 insertions, 3 deletions
diff --git a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
index 62b3db8..d6f166b 100644
--- a/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
+++ b/libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
@@ -285,7 +285,9 @@ void test01()
static_assert(test_property<is_nothrow_swappable,
std::queue<ThrowCopyConsClass>>(true), "");
static_assert(test_property<is_nothrow_swappable,
- std::priority_queue<ThrowCopyConsClass>>(true), "");
+ std::priority_queue<ThrowCopyConsClass,
+ std::vector<ThrowCopyConsClass>,
+ comps::CompareNoThrowCopyable>>(true), "");
static_assert(test_property<is_nothrow_swappable,
std::stack<ThrowCopyConsClass>>(true), "");
static_assert(test_property<is_nothrow_swappable,
diff --git a/libstdc++-v3/testsuite/20_util/is_swappable/value.h b/libstdc++-v3/testsuite/20_util/is_swappable/value.h
index 2f7a00b..eb3f96d 100644
--- a/libstdc++-v3/testsuite/20_util/is_swappable/value.h
+++ b/libstdc++-v3/testsuite/20_util/is_swappable/value.h
@@ -55,6 +55,13 @@ namespace funny {
{
friend void swap(F3&, F3) {}
};
+
+ struct DummyCmp
+ {
+ template<class T>
+ bool operator()(const T&, const T&) const
+ { return false; }
+ };
}
void test01()
{
@@ -152,7 +159,9 @@ void test01()
static_assert(test_property<is_swappable,
std::priority_queue<int>[1][2][3]>(true), "");
static_assert(test_property<is_swappable,
- std::priority_queue<construct::Nontrivial>>(true), "");
+ std::priority_queue<construct::Nontrivial,
+ std::vector<construct::Nontrivial>,
+ funny::DummyCmp>>(true), "");
static_assert(test_property<is_swappable,
std::stack<int>>(true), "");
static_assert(test_property<is_swappable,
diff --git a/libstdc++-v3/testsuite/24_iterators/output/concept.cc b/libstdc++-v3/testsuite/24_iterators/output/concept.cc
index ddb646b..a052438 100644
--- a/libstdc++-v3/testsuite/24_iterators/output/concept.cc
+++ b/libstdc++-v3/testsuite/24_iterators/output/concept.cc
@@ -68,7 +68,7 @@ using std::string;
using std::string_view;
using std::vector;
-struct B { };
+struct B { bool operator<(const B&) const; };
static_assert( output_iterator< array<int, 1>::iterator, int > );
static_assert( output_iterator< array<B, 1>::iterator, B > );