libstdc++: Implement P1872R0 and P1394R0 for std::span
authorJeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
Thu, 5 Dec 2019 13:50:01 +0000 (13:50 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 5 Dec 2019 13:50:01 +0000 (13:50 +0000)
commita7922ddf481b048c0aaa5fae9d836d656e08d850
tree0aac0d4f9357853a545e717fb374821c1183f288
parentb0a71a184c6e2ec2cdf5eed90308d4e96fb1beda
libstdc++: Implement P1872R0 and P1394R0 for std::span

This also fixes a bug in the implementation of LWG 3255, which causes:
FAIL: 23_containers/span/lwg3255.cc (test for excess errors)
That's because the test was wrong and verified the buggy behaviour. That
will be fixed in the following commit.

2019-12-05  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>

Implement P1872R0 and P1394R0 for std::span
* include/bits/range_access.h (__adl_begin, __adl_end): Remove.
(sentinel_t, range_value_t, range_reference_t)
(range_rvalue_reference_t, __forwarding_range, disable_sized_range)
(output_range, input_range, forward_range, bidirectional_range)
(random_access_range, contiguous_range, common_range): Move here from
<ranges>, to make this the "ranges lite" internal header.
* include/std/ranges: Move basic aliases and concepts to
<bits/range_access.h>.
* include/std/span: Use concepts and ranges:: calls instead of
enable_if and friends.
* include/std/type_traits: Add __is_array_convertible trait.

From-SVN: r279000
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/range_access.h
libstdc++-v3/include/std/ranges
libstdc++-v3/include/std/span
libstdc++-v3/include/std/type_traits