* [committed] libstdc++: Fix tests that use invalid types in ordered containers
@ 2021-09-28 19:25 Jonathan Wakely
0 siblings, 0 replies; only message in thread
From: Jonathan Wakely @ 2021-09-28 19:25 UTC (permalink / raw)
To: libstdc++, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 616 bytes --]
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.
Tested x86_64-linux. Committed to trunk.
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 3266 bytes --]
commit 4000d722e609bbbb1e923721b54911bb784eeec3
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Fri Sep 24 13:21:34 2021
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.
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 62b3db8dc1f..d6f166bee46 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 2f7a00b9aef..eb3f96dc0b1 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 ddb646b22ad..a0524387dab 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 > );
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-09-28 19:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28 19:25 [committed] libstdc++: Fix tests that use invalid types in ordered containers Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).