Quuxplusone added inline comments.
================ Comment at: libcxx/include/regex:2520 + _LIBCPP_PREFERRED_NAME(wregex) + basic_regex { ---------------- Why does this attribute go on the class template? Shouldn't it be an attribute on the typedef, so that you don't have to repeat yourself? I mean, I'd much rather see template<class T> class BasicFoo { }; using [[preferred]] Foo = BasicFoo<A>; using [[preferred]] WFoo = BasicFoo<B>; than template<class> class BasicFoo; using Foo = BasicFoo<A>; using WFoo = BasicFoo<B>; template<class T> class [[preferred(Foo, WFoo)]] BasicFoo { }; The latter repeats every identifier one extra time, compared to the former. And then, in fact, couldn't you go one step further and say that typedefs in the same scope as the class template itself should //always// implicitly have this attribute? Even if the attribute doesn't appear in the source code, we still want to print `basic_regex<char>` as `regex`, right? It shouldn't cost any additional work for the compiler to figure that out. 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