Ответ 1
Это косвенно запрещено, потому что:
7/3 запрещает записывать явную специализацию без ключа класса (class
, struct
или union
):
В простом объявлении необязательный список init-declarator может быть опущен только при объявлении класса (раздел 9) или перечисления (7.2), то есть когда spec-specifier-seq содержит либо спецификатор класса, специфицированный тип-спецификатор с ключом класса (9.1) или спецификатором перечисления.
7.1.6.3/2 запрещает комбинировать ключ класса с специализацией шаблона псевдонима:
3.4.4 описывает, как поиск имен выполняется для идентификатора в специфицированном спецификаторе типа.... Если идентификатор разрешает имя typedef или идентификатор простого шаблона разрешает специализацию шаблона псевдонимов, специфицированный тип-спецификатор плохо сформирован.