On 07/09/2017 07:34 PM, Meta wrote:
On Sunday, 9 July 2017 at 22:28:50 UTC, Andrei Alexandrescu wrote:
On 07/09/2017 03:12 PM, Walter Bright wrote:
On 7/9/2017 6:13 AM, Andrei Alexandrescu wrote:
We should use typeof(assert(0)) for Bottom. There is precedent - there is no name for typeof(null).
I had forgotten about the typeof(null) thing. You're right. But there are some issues. What do we do with:

     typeof(assert(0))* p;

? What does that mean?

That would be a pointer that may only be null - a consequence of the typeof(assert(0)) being uninstantiable.

Generally I'm not too worried about constructs like typeof(assert(0))[], typeof(assert(0))*, use in templates etc - we don't need to "design" these cases, their behavior flows from the properties of typeof(assert(0)) itself.

Similarly, I don't recall ever there being a problem with typeof(null)*, typeof(null)[], people complaining they passed typeof(null) to a template where it did bad things, etc.


Andrei

`typeof(null)` actually has one valid value and doesn't crash the program when when you try to create an instance of it. We should not treat this the same as `typeof(null)`.

Agreed (with the mention it's not in contradiction with the above). -- Andrei

Reply via email to