gcc/libstdc++-v3/testsuite
Jonathan Wakely 82030d5101 libstdc++: Make std::chrono::duration use reduced ratio for period
This implements the changes from P0548 "common_type and duration". That
was a change for C++17, but as it corrects some issues introduced by DRs
I'm also treating it as a DR and changing it for all modes from C++11
up.

The main change is that duration<R,P>::period no longer denotes P, but
rather P::type, the reduced ratio. The unary operator+ and operator-
members of duration should now return a duration using that reduced
ratio.

The requirement that common_type<T>::type is the same type as
common_type<T, T>::type (rather than simply T) was already implemented
for PR 89102.

The standard says that duration::operator+() and duration::operator-()
should return common_type_t<duration>, but that seems unnecessarily
expensive to compute. This change just uses duration<rep, period> which
is the same type, so we don't need to instantiate common_type.

As an optimization, this also adds partial specializations of
common_type for two durations of the same type, a single duration, two
time_points of the same type, and a single time_point. These
specializations avoid instantiating other specializations of common_type
and one or both of __duration_common_type or __timepoint_common_type for
the cases where the answer is trivial to obtain.

libstdc++-v3/ChangeLog:

	* include/std/chrono (__duration_common_type): Ensure the
	reduced ratio is used. Remove unused partial specialization
	using __failure_type.
	(common_type): Pass reduced ratios to __duration_common_type.
	Add partial specializations for simple cases involving a single
	duration or time_point type.
	(duration::period): Use reduced ratio.
	(duration::operator+(), duration::operator-()): Return duration
	type using the reduced ratio.
	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
	Adjust expected errors.
	* testsuite/20_util/duration/requirements/reduced_period.cc: New test.
2020-08-27 22:36:03 +01:00
..
17_intro libstdc++: Do not check "cold" name on darwin [PR 96736] 2020-08-21 18:24:40 +01:00
18_support libstdc++: Replace some VERIFY tests with static_assert 2020-08-07 17:45:42 +01:00
19_diagnostics libstdc++: Ensure c++NN effective target present in all C++17 tests 2020-07-31 19:58:02 +01:00
20_util libstdc++: Make std::chrono::duration use reduced ratio for period 2020-08-27 22:36:03 +01:00
21_strings libstdc++: Remove tests for self-move debug assertions 2020-08-25 16:36:01 +01:00
22_locale Update copyright years. 2020-01-01 12:51:42 +01:00
23_containers libstdc++: Fix regression in hash containers 2020-08-26 17:44:23 +01:00
24_iterators libstdc++: Fix std::indirectly_readable ambiguity [LWG 3446] 2020-08-24 16:18:31 +01:00
25_algorithms libstdc++: Skip PSTL tests when installed TBB is too old [PR 96718] 2020-08-21 12:01:05 +01:00
26_numerics libstdc++: Avoid using __float128 in strict modes 2020-07-31 19:58:03 +01:00
27_io libstdc++: Add deprecated attributes to old iostream members 2020-08-19 12:13:23 +01:00
28_regex libstdc++: Ensure c++NN effective-target present in more tests 2020-07-31 19:58:03 +01:00
29_atomics libstdc++: Ensure c++NN effective target present in all C++17 tests 2020-07-31 19:58:02 +01:00
30_threads libstdc++: Adjust static assertions in futures and promises [LWG 3466] 2020-08-25 15:52:57 +01:00
abi Update copyright years. 2020-01-01 12:51:42 +01:00
backward Update copyright years. 2020-01-01 12:51:42 +01:00
config Update copyright years. 2020-01-01 12:51:42 +01:00
data
decimal Update copyright years. 2020-01-01 12:51:42 +01:00
experimental libstdc++: Make Networking TS work without gthreads [PR 89760] 2020-08-11 16:16:22 +01:00
ext libstdc++: Avoid errors in allocator's noexcept-specifier (PR 89510) 2020-04-30 16:01:43 +01:00
lib diagnostics: Add new option -fdiagnostics-plain-output 2020-08-14 09:29:19 -04:00
libstdc++-abi Update copyright years. 2020-01-01 12:51:42 +01:00
libstdc++-dg Update copyright years. 2020-01-01 12:51:42 +01:00
libstdc++-prettyprinters libstdc++: Remove inheritance from elements in std::tuple 2020-08-17 15:27:51 +01:00
libstdc++-xmethods Update copyright years. 2020-01-01 12:51:42 +01:00
performance Update copyright years. 2020-01-01 12:51:42 +01:00
special_functions Update copyright years. 2020-01-01 12:51:42 +01:00
std libstdc++: Fix arithmetic bug in chrono::year_month::operator+ 2020-08-27 14:11:24 -04:00
tr1 libstdc++: Ensure c++NN effective-target present in more tests 2020-07-31 19:58:03 +01:00
tr2 Update copyright years. 2020-01-01 12:51:42 +01:00
util libstdc++: Make testsuite usable with -fno-exceptions 2020-07-30 12:50:02 +01:00
Makefile.am libstdc++: Enable simple invocation of runtest in testsuite 2020-05-21 14:16:19 +01:00
Makefile.in libstdc++: Regenerate makefiles 2020-06-23 07:59:40 +01:00