[libcxx-commits] [PATCH] D91311: Add new 'preferred_name' attribute.

David Blaikie via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue Nov 17 14:29:25 PST 2020


dblaikie added a comment.

In D91311#2400926 <https://reviews.llvm.org/D91311#2400926>, @ldionne wrote:

> In D91311#2400917 <https://reviews.llvm.org/D91311#2400917>, @dblaikie wrote:
>
>> How would that work for users - they would get error messages from the compiler using type names that don't exist in the source code? I'd have thought that would be quite confusing.
>
> Yes, if a library author decides to say something like:
>
>   template<class _CharT, class _Traits>
>   class [[preferred_name(basic_string_view<char>, "ahaha I'm such a troll")]]
>   basic_string_view {
>       ...
>   };
>
> Then you might get compiler errors that are not super helpful. I don't think the fact that such nonsense is doable means that we shouldn't give this control to library authors.

It's certainly a cost/risk to weigh against the benefits. (both intentional weird uses like that, but also accidental misuses like typos).

> For instance, I can easily imagine a library that provides an API where some types shouldn't be named (for example expression templates). In that case, you might want to describe a type by a string along the lines of `decltype(some-expression)`, which could potentially be a lot more useful than the ability to refer to a typedef. Does this sort of usage ring true to someone else?

A concrete/real-world example might be helpful, if you happen to have one on hand.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D91311/new/

https://reviews.llvm.org/D91311



More information about the libcxx-commits mailing list