On 12/11/11 6:05 AM, kenji hara wrote:
2.057 will compile this code, because it adds the new feature.
Now null literal has the type that is expressed as typeof(null), not void*.
And typeof(null) is derived from all class types.

static assert(is(typeof(null) : Bob));   // pass in 2.057

Then IFTI works with null literal correctly.

Kenji Hara

This is theoretically correct and practically elegantly realized. Thanks Kenji! I love how you got this not-so-obvious aspect right.

The null reference is what's called a "bottom type" in the class type lattice, i.e. is the opposite of Object, which would be a "top type". Object is the most general type, the supertype of all classes; typeof(null) is the most specific type, the subtype of all classes. It is in fact so specific it can't be instantiated.


Thanks again,

Andrei

Reply via email to