opDispatch and compile time parameters
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Wed Oct 21 04:40:15 PDT 2015
On 10/21/2015 12:55 PM, Andrei Alexandrescu wrote:
> On 10/19/15 9:49 PM, Jonathan M Davis wrote:
>> On Monday, 19 October 2015 at 23:37:09 UTC, Timon Gehr wrote:
>>> This is the worst part:
>>>
>>> class C{
>>> int[] x=[1,2,3];
>>> }
>>>
>>> void main(){
>>> auto mut=new C;
>>> auto imm=new immutable(C);
>>> assert(imm.x[0]==1);
>>> mut.x[0]=2;
>>> assert(imm.x[0]==2);
>>> }
>>
>> Oooo. Ouch. Yeah, that pushes it from being a good idea to disallow this
>> in order to avoid bugs to a necessity to disallow it in order to avoid
>> breaking the type system.
>
> Please file, thanks. -- Andrei
>
(I've filed it in 2013.
https://issues.dlang.org/show_bug.cgi?id=10376 .)
What should be the expected behaviour?
- Don't allow default initialization with mutable indirections in
aggregates.
- Clone the mutable referenced data for each instance.
- Have different "init" for different mutability.
- ... ?
More information about the Digitalmars-d
mailing list