immutable constructor and semantics of two construction syntaxes

Timon Gehr timon.gehr at gmx.ch
Sun Apr 14 01:03:15 PDT 2013


On 04/14/2013 02:48 AM, Ali Çehreli wrote:
> When immutable constructors are implemented, will there be a difference
> between the two syntaxes below?
>
> struct MyStruct
> {
>      int i;
>
>      // ... assume that MyStruct has both
>      // mutable and immutable constructors ...
> }
>
>      auto s0 = immutable(MyStruct)("some parameter");
>
>      immutable s1 = MyStruct("some parameter");
>
> The former syntax constructs an immutable literal, so the type of s0 is
> deduced to be immutable.
>
> The latter syntax constructs a mutable literal and blits it to the
> immutable s1.
>
> Should the former syntax call the immutable constructor and the latter
> syntax call the mutable constructor?
>
> Ali

I guess so. But it does not really make sense to declare an immutable 
constructor if the struct instances implicitly convert between mutable 
and immutable.


More information about the Digitalmars-d mailing list