On 07/10/20 12:10 -0400, Patrick Palka via Libstdc++ wrote:
On Wed, 30 Sep 2020, Patrick Palka wrote:
This rewrites ranges::construct_at in terms of std::construct_at so
that we can piggy back on the compiler's existing support for
recognizing placement new within std::construct_at during constexpr
evaluation instead of having to additionally teach the compiler about
ranges::construct_at.
While we're here, we should also make ranges::construct_at conditionally
noexcept like std::construct_at.
Tested on x86_64-pc-linux-gnu, does this look OK for trunk?
libstdc++-v3/ChangeLog:
PR libstdc++/95788
* include/bits/ranges_uninitialized.h:
(__construct_at_fn::operator()): Just call std::construct_at.
Declare it conditionally noexcept.
* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
New test.
Here's an updated patch that std::-qualifies the calls to declval in its
function signature and adjusts formatting accordingly:
OK for trunk and gcc-10, thanks.