Commit f6b2b790 by Jonathan Wakely

libstdc++: Fix two tests that fail in C++20 mode

	* testsuite/20_util/is_constructible/value-2.cc: Fix test to account
	for changes due to parenthesized aggregate-initialization in C++20.
	* testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
	with std::chrono::sys_time in C++20.
parent 42cda3ba
2020-03-28 Jonathan Wakely <jwakely@redhat.com> 2020-03-28 Jonathan Wakely <jwakely@redhat.com>
* testsuite/20_util/is_constructible/value-2.cc: Fix test to account
for changes due to parenthesized aggregate-initialization in C++20.
* testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
with std::chrono::sys_time in C++20.
* include/bits/stl_iterator.h (reverse_iterator): Use requires-clause * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
to constrain C++20 versions of comparison operators. Fix backwards to constrain C++20 versions of comparison operators. Fix backwards
logic of relational operators. logic of relational operators.
......
...@@ -107,7 +107,9 @@ static_assert(!std::is_constructible<Abstract, std::nullptr_t>::value, "Error"); ...@@ -107,7 +107,9 @@ static_assert(!std::is_constructible<Abstract, std::nullptr_t>::value, "Error");
static_assert(!std::is_constructible<std::nullptr_t, Abstract>::value, "Error"); static_assert(!std::is_constructible<std::nullptr_t, Abstract>::value, "Error");
static_assert(!std::is_constructible<Abstract, int[]>::value, "Error"); static_assert(!std::is_constructible<Abstract, int[]>::value, "Error");
static_assert(std::is_constructible<B, D>::value, "Error"); static_assert(std::is_constructible<B, D>::value, "Error");
#ifndef __cpp_aggregate_paren_init
static_assert(!std::is_constructible<D, B>::value, "Error"); static_assert(!std::is_constructible<D, B>::value, "Error");
#endif
static_assert(!std::is_constructible<int[], int[1]>::value, "Error"); static_assert(!std::is_constructible<int[], int[1]>::value, "Error");
static_assert(!std::is_constructible<int[1], int[]>::value, "Error"); static_assert(!std::is_constructible<int[1], int[]>::value, "Error");
static_assert(!std::is_constructible<int[], Empty>::value, "Error"); static_assert(!std::is_constructible<int[], Empty>::value, "Error");
...@@ -416,7 +418,9 @@ static_assert(!std::is_constructible<int(&)[1], int(&)[2]>::value, "Error"); ...@@ -416,7 +418,9 @@ static_assert(!std::is_constructible<int(&)[1], int(&)[2]>::value, "Error");
static_assert(!std::is_constructible<int(&)[1], int&>::value, "Error"); static_assert(!std::is_constructible<int(&)[1], int&>::value, "Error");
static_assert(!std::is_constructible<int&, int(&)[1]>::value, "Error"); static_assert(!std::is_constructible<int&, int(&)[1]>::value, "Error");
#ifndef __cpp_aggregate_paren_init
static_assert(!std::is_constructible<U, int>::value, "Error"); static_assert(!std::is_constructible<U, int>::value, "Error");
#endif
static_assert(!std::is_constructible<U, Empty>::value, "Error"); static_assert(!std::is_constructible<U, Empty>::value, "Error");
static_assert(!std::is_constructible<void(), void()>::value, "Error"); static_assert(!std::is_constructible<void(), void()>::value, "Error");
......
...@@ -20,11 +20,13 @@ ...@@ -20,11 +20,13 @@
#include <chrono> #include <chrono>
#include <type_traits> #include <type_traits>
using namespace std; using std::is_constructible;
using namespace std::chrono; using std::chrono::seconds;
using std::chrono::milliseconds;
template <class Duration> template <class Duration>
using sys_time = time_point<system_clock, Duration>; using sys_time
= std::chrono::time_point<std::chrono::system_clock, Duration>;
static_assert(is_constructible<sys_time<milliseconds>, sys_time<seconds>>{}, static_assert(is_constructible<sys_time<milliseconds>, sys_time<seconds>>{},
"Can construct time_point from one with lower precision duration"); "Can construct time_point from one with lower precision duration");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment