dblaikie added a comment.

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

> In D91311#2398526 <https://reviews.llvm.org/D91311#2398526>, @rsmith wrote:
>
>> [...]
>
> Thanks for your detailed explanation. I did not understand the philosophy of 
> the attribute, and it's now clear to me that it shouldn't be tied to the 
> typedef, indeed.
>
>> There's another design approach we could follow, that would keep the 
>> attribute on the template but avoid the awkwardness of requiring the typedef 
>> to appear first: we could completely divorce this feature from typedefs. 
>> Instead, we could say the attribute is of the form `preferred_name(type, 
>> "name")`, where `type` is a specialization of the type to which the 
>> attribute is attached, and `"name"` is a name used in diagnostics when 
>> referring to that type, which is printed as if it's a member of the 
>> enclosing namespace (but there'd be no enforcement that such a member 
>> actually exists and declares the corresponding type). What do you think?
>
> I think this is pretty interesting, actually. While it does seem a bit more 
> loosey-goosey in terms of the type system, I can imagine useful applications 
> of being able to use arbitrary strings, such as providing better diagnostics 
> for specific types without having to actually have an associated typedef.

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.

> Just to clarify, that would look like this, right?
>
>   template<class _CharT, class _Traits>
>   class [[preferred_name(basic_string_view<char>, "string_view")]]
>         [[preferred_name(basic_string_view<char8_t>, "u8string_view")]]
>         [[preferred_name(basic_string_view<char16_t>, "u16string_view")]]
>         [[preferred_name(basic_string_view<char32_t>, "u32string_view")]]
>         [[preferred_name(basic_string_view<wchar_t>, "wstring_view")]]
>   basic_string_view {
>       ...
>   };
>
> I don't want to ask for something unreasonable.. but I think that's a neat 
> design that's actually more powerful than the current one. I would be curious 
> to hear what other people think as well, to see whether I'm the only one 
> preferring the more free-form approach.




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D91311

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to