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

Reply via email to