On Saturday, 14 June 2014 at 00:40:06 UTC, Jonathan M Davis via Digitalmars-d wrote:
On Sat, 14 Jun 2014 00:34:51 +0200
Timon Gehr via Digitalmars-d <[email protected]> wrote:

On 06/13/2014 11:45 PM, Jonathan M Davis via Digitalmars-d wrote:
> On Fri, 13 Jun 2014 21:23:00 +0000
> deadalnix via Digitalmars-d <[email protected]> > wrote:
>
>> The approach consisting in having non nullable >> pointers/reference
>> by default is the one that is gaining traction and for good
>> reasons.
>
> That interacts _really_ badly with D's approach of requiring > init values > for all types. We have enough problems with @disable this() > as it is.
>
> - Jonathan M Davis
>

@disable this() and nested structs etc. Trying to require init values for everything isn't an extraordinarily good idea. It roughly extends 'nullable by default' to all _structs_ with non-trivial invariants.

True, some types become problematic when you have to have an init value (like a NonNullable struct to make nullable pointers non-nullable), but generic code is way more of a pain to write when you can't rely on an init value existing, and there are a number of places that the language requires an init value (like arrays), making types which don't have init values problematic to use. Overall, I think that adding @disable this() to the language was a mistake.

Huh? Types with `@disable this()` still have an `init` value. All it does is disallow instantiating the type without specifying an initializer (e.g. a struct literal, a value returned from a factory function, or `static opCall()`).

Reply via email to