https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93607
Bug ID: 93607 Summary: Deprecated alias templates don't produce warnings Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: tim.pavlic at minelab dot com.au Target Milestone: --- Source I'm testing with: ------------------------- #include <type_traits> template <typename T> struct identity { using type = T; }; template <typename T> using Identity [[deprecated]] = identity<T>; void x() { // No deprecated warnings here using Int = typename Identity<int>::type; static_assert(std::is_same<typename identity<int>::type, typename Identity<int>::type>::value, ""); // No deprecated warning Int i = 0; // No deprecated warning typename Identity<int>::type j = 0; } ----- I would have thought that all (or most) of the scenarios above would have generated deprecation warnings, but none of them do. Does the standard say that alias templates are exempt from [[deprecated]]? I've tried this on godbolt.org with versions of GCC back to 4.9, and none of them produce warnings.