8sa1-gcc/libstdc++-v3/include
Patrick Palka 8f0d8cd852 libstdc++: LWG 3286 ranges::size is not required to be valid after ...
... a call to ranges::begin on an input range.

This implements LWG 3286.  The new wording for the single-argument constructor
for subrange is implemented by splitting the constructor into two delegating
constructors, one constrained by _S_store_size and the other by !_S_store_size.

Tested on x86_64-pc-linux-gnu, both added tests fail before the patch and pass
with the patch.

libstdc++-v3/ChangeLog:

	LWG 3286 ranges::size is not required to be valid after a call to
	ranges::begin on an input range
	* include/std/ranges (subrange::subrange): Split single-argument
	constructor into two, one constrained by _S_store_size and another by
	!_S_store_size.
	(take_view::begin): Call size() before calling ranges::begin(_M_base).
	* testsuite/std/ranges/adaptors/lwg3286.cc: New test.
	* testsuite/std/ranges/subrange/lwg3286.cc: New test.
2020-03-11 00:40:33 -04:00
..
backward Update copyright years. 2020-01-01 12:51:42 +01:00
bits libstdc++: Give ranges::empty() a concrete return type (PR 93978) 2020-03-06 09:22:54 -05:00
c Update copyright years. 2020-01-01 12:51:42 +01:00
c_compatibility Update copyright years. 2020-01-01 12:51:42 +01:00
c_global Update copyright years. 2020-01-01 12:51:42 +01:00
c_std Update copyright years. 2020-01-01 12:51:42 +01:00
debug libstdc++: Define <=> for Debug Mode array 2020-02-27 15:13:16 +00:00
decimal Update copyright years. 2020-01-01 12:51:42 +01:00
experimental libstdc++: enable_view has false positives (LWG 3326) 2020-02-24 12:15:05 +00:00
ext libstdc++: Implement P1878R1 "Constraining Readable Types" 2020-02-07 16:58:43 +00:00
parallel Update copyright years. 2020-01-01 12:51:42 +01:00
precompiled Update copyright years. 2020-01-01 12:51:42 +01:00
pstl Restore enable_if lost during original import of pstl 2019-12-11 03:38:24 +00:00
std libstdc++: LWG 3286 ranges::size is not required to be valid after ... 2020-03-11 00:40:33 -04:00
tr1 Update copyright years. 2020-01-01 12:51:42 +01:00
tr2 Update copyright years. 2020-01-01 12:51:42 +01:00
Makefile.am libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00
Makefile.in libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00