Consider the program:
----------------------------------------
module y;
template fffff(alias s) {
void fffff() {
}
}
struct U {
int v;
}
void main() {
fffff!( U(4) )();
}
----------------------------------------
The mangled symbol of fffff!( U(4) ) is:
_D1y20__T5fffffVS1y1US1i4Z5fffffFZv
which means
_D (MangledName)
1y (LName: y)
20__T (TemplateInstanceName)
5fffff (LName: fffff)
V (TemplateArg: value)
S (TypeStruct)
1y (LName: y)
1U (LName: U)
S1 (***UNDOCUMENTED*** struct value with 1 argument)
i4 (integer: 4)
Z (end of TemplateInstanceName)
5fffff (LName: fffff)
FZv (TypeFunction: void _())
Above, the mangling
Value:
'S' Number Value...
is not documented at all. The D spec should mention it.
(Also, the spec should also mention 'A Number Value...' can represent associative array literal as well.)