cpp/language/type alias

Type alias is a name that refers to a previously defined type (similar to ).

Alias template is a name that refers to a family of types.

Syntax
Alias declarations are with the following syntax:

Explanation
@1@ A type alias declaration introduces a name which can be used as a synonym for the type denoted by. It does not introduce a new type and it cannot change the meaning of an existing type name. There is no difference between a type alias declaration and declaration. This declaration may appear in block scope, class scope, or namespace scope. @2@ An alias template is a template which, when specialized, is equivalent to the result of substituting the template arguments of the alias template for the template parameters in the.

When the result of specializing an alias template is a dependent, subsequent substitutions apply to that template-id:

The type produced when specializing an alias template is not allowed to directly or indirectly make use of its own type:

Alias templates are never deduced by when deducing a template template parameter. It is not possible to or  an alias template.

Like any template declaration, an alias template can only be declared at class scope or namespace scope.