https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117454
--- Comment #4 from Darrell Wright <Darrell.Wright at gmail dot com> --- #include <type_traits> struct Base { using Type = int; }; template <typename Type> struct Derived : Base { Type field; }; static_assert( std::is_same_v<decltype(Derived<double>{}.field), double> ); I think this should warn too, the intent is clear and the user hopefully gets a conversion warning/error.