Also, I don't understand why D needs a separate syntax for primitive types. I don't like this whole "alias this" idea. why can't we just use: struct S : int { ... } after all, that exactly what's that feature is trying to do, isn't it?