Q_DECLARE_METATYPE still expands to a struct containing a qt_metatype_id function. That one is called as the legacy register operation the first time we're trying to access the id of the metatype.
qt_metatype_id will in turn normalize the name it was provided with, and afterwards call qRegisterNormalizedMetatype. This is arguably still necessary to support the case where the user provided name does not match the "real" name due to namespaces. In most cases, the normalized name however does equal the type name, and in those cases we register the type as a typedef of itself (via QMetaType::registerNormalizedType).
As type normalization is a rather costly operation, and registering those typedefs is wasteful, we should skip that work.