[PATCH] libstdc++: add initializer_list constructor to std::span (P2447)
Jonathan Wakely
jwakely@redhat.com
Wed Dec 11 22:20:08 GMT 2024
On Wed, 11 Dec 2024 at 21:18, Giuseppe D'Angelo
<giuseppe.dangelo@kdab.com> wrote:
>
> On 11/12/2024 21:41, Jonathan Wakely wrote:
> > Hmm, the warning is useful if somebody does:
> >
> > std::span s({1,2,3});
> >
> > So I think we do want the warning, but maybe give it a special case so
> > it doesn't warn for an rvalue std::span.
>
> Do you have anything in mind to make this work?
It would need changes to the front end, but I think they'd be useful changes.
>
> Note that the above is akin to:
>
> std::vector<int> getVector();
> std::span<const int> sp = getVector();
>
>
> which is also similar to:
>
> std::string getString();
> std::string_view sv = getString();
>
>
> and none of these warn at the moment.
They should do though :-)
If C++ had ref-qualified constructors then we could constrain the
std::span(Range&&)& constructor to only work for borrowed_ranges but
allow the std::span(Range&&)&& constructor to work for any ranges. We
don't have that though.
More information about the Libstdc++
mailing list