https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119888
Bug ID: 119888
Summary: GCC 15.x regression: std::string_view as template
parameter incorrectly decays to char const*
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: brunopitrus at hotmail dot com
Target Milestone: ---
Code (found in Chromium):
#include<algorithm>
#include<functional>
#include<string_view>
template <typename Range, typename Proj = std::identity>
requires std::ranges::sized_range<Range> && std::ranges::input_range<Range>
&&
std::indirectly_unary_invocable<Proj,
std::ranges::iterator_t<Range>>
auto ToVector(Range&& range, Proj proj = {}) {
using ProjectedType =
std::projected<std::ranges::iterator_t<Range>, Proj>::value_type;
std::vector<ProjectedType> container;
container.reserve(std::ranges::size(range));
std::ranges::transform(std::forward<Range>(range),
std::back_inserter(container), std::move(proj));
return container;
}
auto bob(std::string_view str) {
return ToVector(str);
}
Compiles fine with 14.2.
See it on godbolt: https://godbolt.org/z/z3Kv4vbqq