Same const type qualifier
It's explicitly allowed in the typedef case, and disallowed in the declaration itself:
[dcl.type/1]
The type-specifiers are:
type-specifier : ... cv-qualifier
defining-type-specifier : type-specifier
[dcl.spec/1 and 2]
The specifiers that can be used in a declaration are:
decl-specifier : ... defining-type-specifier ...
Each decl-specifier shall appear at most once in a complete decl-specifier-seq, except that long may appear twice.
[dcl.type.cv/1]
There are two cv-qualifiers, const and volatile. Each cv-qualifier shall appear at most once in a cv-qualifier-seq. If a cv-qualifier appears in a decl-specifier-seq, the init-declarator-list or member-declarator-list of the declaration shall not be empty. [ Note: [basic.type.qualifier] and [dcl.fct] describe how cv-qualifiers affect object and function types. — end note ] Redundant cv-qualifications are ignored. [ Note: For example, these could be introduced by typedefs. — end note ]
Besides type aliases, a template parameter is another case where the qualifier could be redundant. The rationale for allowing this, is to not break otherwise correct declarations just because a cv-qualifier snuck in the back door.