https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93936
Bug ID: 93936 Summary: [ranges] std::ranges::split_view<...>::_OuterIter<...>::__curre nt() is private within this context Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: eric.niebler at gmail dot com Target Milestone: --- The following program fails to compile with -std=c++2a on gcc-trunk: #include <ranges> #include <string> #include <vector> #include <iterator> #include <algorithm> #include <iostream> inline constexpr auto as_string = [](std::ranges::view auto rng) { auto in = rng | std::views::common; return std::string(in.begin(), in.end()); }; int main() { namespace views = std::views; std::string str = "Now is the time for all good men to come to the aid of their county."; auto rng = str | views::split(' ') | views::transform(as_string) | views::common; std::vector<std::string> words(rng.begin(), rng.end()); std::ranges::copy(words, std::ostream_iterator<std::string>{std::cout,","}); } The error is: /opt/compiler-explorer/gcc-trunk-20200225/include/c++/10.0.1/ranges:2828:31: error: 'constexpr auto& std::ranges::split_view<_Vp, _Pattern>::_OuterIter<_Const>::__current() const [with bool _Const = true; _Vp = std::ranges::ref_view<std::__cxx11::basic_string<char> >; _Pattern = std::ranges::single_view<char>]' is private within this context 2828 | { return __x._M_i.__current() == __y._M_i.__current(); } | ~~~~~~~~~~~~~~~~~~^~ Obligatory godbolt link: https://godbolt.org/z/B4tZPx