[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