C++ Logo

std-proposals

Advanced search

Re: Operator functions to fix ADL

From: Dusan Jovanovic (DBJ) <"Dusan>
Date: Tue, 13 Oct 2020 09:35:29 +0200
Who is the author of ADL?

On Mon, 12 Oct 2020, 18:53 Григорий Шуренков via Std-Proposals, <
std-proposals_at_[hidden]> wrote:

> Hi!
>
> >
> > As one of the "I am just a regular user, not a compiler guru" lurkers on
> this list, I'd just like to mention that anything that involves call-site
> annotation is a great source of confusion for regular users, especially
> when the answer to "Why?" is "obscure reason X" as it would be in this
> case. Shifting the responsibility to the caller is just as ineffective as
> documenting the issue in a manual.
>
>
> Let me explain why it might be a good idea to have a call-site annotation
> for ADL. The reason is not obscure, the annotation designates an unusual
> function call - a customization point. Moreover, until recently it was a
> recommended practice to annotate such calls in the following way:
> using std::swap;
> swap(a, b);
>
> it is effectively an annotation, but a strange one, leaving it without
> comment would raise a question from a regular user. Now we can write
> std::ranges::swap(a, b); of course, however, design of customization
> points of std::ranges currently relies on intricacies of ADL name lookup.
> So, I would argue that the annotation would be useful in the
> implementation of such wrappers as std::ranges::swap, std::ranges::begin
> etc.
>
> Annotation is not bad, if it actually helps a user to understand that
> something unusual is going on, then after consulting language reference or
> just google a user can understand what exactly is going on.
>
> Second point is that it would be rare, most of the functions are not
> customization points.
>
> Third point is that such annotation allows what is currently not possible.
> If you look up the definition of range-based for loop in the standard you'd
> see that it is impossible to write its implementation in plain C++. To find
> begin and end for a container it performs only ADL w/o usual name lookup.
> An annotated call would do exactly that.
>
> Regards,
> Gregory
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>

Received on 2020-10-13 02:35:52