https://issues.dlang.org/show_bug.cgi?id=20863
--- Comment #6 from [email protected] --- struct Foo {} template P(alias X) { pragma(msg, X); enum P = 1; } int y = P!(const int); int x = P!(immutable(double)); int z = P!(immutable(Foo)); int z2 = P!(immutable Foo); The output of this is const(int) immutable(double) Foo What happens is that the types which are not symbols are merely "losslessly cast" to a symbol. Therefore the STC is not dropped. That means the new addition of types matching to alias behaves inconsistently. Not the other way around. --
