]> gcc.gnu.org Git - gcc.git/commit
libstdc++: Avoid accidental ADL when calling make_reverse_iterator
authorMoritz Sichert <sichert@in.tum.de>
Tue, 23 Mar 2021 15:47:37 +0000 (15:47 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 23 Mar 2021 16:34:42 +0000 (16:34 +0000)
commit09f08fef71fb776a1d850a7b854c7ccf8a3d6c11
treef051c588b5bae5a173ee331a864f4fb2dd4ccd67
parent6b1f841ce0ccf30eda7896ba5ab0aa94c72307b2
libstdc++: Avoid accidental ADL when calling make_reverse_iterator

std::ranges::reverse_view uses make_reverse_iterator in its
implementation as described in [range.reverse.view]. This accidentally
allows ADL as an unqualified name is used in the call. According to
[contents], however, this should be treated as a qualified lookup into
the std namespace.

This leads to errors due to ambiguous name lookups when another
make_reverse_iterator function is found via ADL.

libstdc++-v3/Changelog:

* include/std/ranges (reverse_view::begin, reverse_view::end):
Qualify make_reverse_iterator calls to avoid ADL.
* testsuite/std/ranges/adaptors/reverse.cc: Test that
views::reverse works when make_reverse_iterator is defined
in an associated namespace.
libstdc++-v3/include/std/ranges
libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
This page took 0.05508 seconds and 5 git commands to generate.