dmd 2.063 beta 5

Steven Schveighoffer schveiguy at yahoo.com
Thu May 23 09:26:37 PDT 2013


On Thu, 23 May 2013 11:36:00 -0400, Artur Skawina <art.08.09 at gmail.com>  
wrote:

> If it wasn't clear - it is about the _language_, not what some compiler
> currently happens to do. Being able to mutate /initialized/ immutables
> is a bad idea. IOW you should not be able to modify 'Packet.type' above.

The immutable isn't initialized.  The memory it happens to be using before  
initialization happens to have the '7' bit pattern in it.

Once it is initialized, I agree it should be immutable from that point on.

> Keep in mind that modifying Packet.type is illegal /right now/. Even from
> a ctor or static-ctor. This does not need to change when such fields are
> no longer always implicitly static. While allowing re-initialization
> of immutables from a ctor is possible, it does not really give you much,
> while weakening const. (eg by making CT evaluation of such fields  
> impossible).

That's an issue of where Packet.type lives.  It doesn't live inside an  
instance right now, in the new version it does.

If Packet.type is not given an initializer, it's inside the instance and  
it (correctly IMO) can be modified inside a ctor until it is used.

These rules are perfectly consistent.

I don't see how they make CT evaluation impossible.

-Steve


More information about the Digitalmars-d-announce mailing list