It is very useful to create a simple alias from a complex type for export from a type library, then it breaks when people use that type library to write templated functions.People do this all the time in C++.
Example: // library code struct _config(T){} struct _matrix(T,C){} alias matrix(T) = _matrix!(T,_config!T); // application code void f(T)(matrix!T m){} void main() { f(matrix!float()); f(matrix!double()); }