immutable struct/class is mutable!

JS js.mdnq at gmail.com
Mon Jul 15 10:35:52 PDT 2013


On Monday, 15 July 2013 at 16:17:02 UTC, John Colvin wrote:
> On Monday, 15 July 2013 at 15:59:44 UTC, JS wrote:
>> On Monday, 15 July 2013 at 15:08:58 UTC, Dicebot wrote:
>>> On Monday, 15 July 2013 at 14:50:04 UTC, JS wrote:
>>>> Why does isMutable and isAssignable return true for a 
>>>> struct/class that are immutable?
>>>>
>>>> immutable struct A { }
>>>>
>>>> isMutable!A returns true.
>>>
>>> looks like
>>>
>>> immutable struct A
>>> {
>>>   int a;
>>> }
>>>
>>> acts as a
>>>
>>> struct A
>>> {
>>>   immutable:
>>>       int a;
>>> }
>>>
>>> Now, I don't see this use case (qualified aggregate 
>>> definition) anywhere in spec and this may be intended 
>>> behavior. But I do agree this looks misleading.
>>
>> Yes, I need immutable to do what it does but also need a way 
>> to emulate an enum.
>>
>> This is because I need to constrain my templates properly. If 
>> struct A isn't immutable then it is no different than any 
>> other struct which is bad because I want only enum like 
>> structs.
>>
>> maybe immutable immutable(struct) A would be a good way to 
>> specify this.
>>
>> An immutable struct should be similar to an enum... a purely 
>> compile time construct not meant to be instantiated in any way.
>
> Why is it you're trying to emulate an enum? Perhaps there's a 
> way to achieve what you want by more normal means.

see my other recent post...


More information about the Digitalmars-d-learn mailing list