Static functions in immutable types...

Tomek Sowiński just at ask.me
Mon Dec 7 14:30:24 PST 2009


Dnia 07-12-2009 o 11:34:52 Michal Minich <michal.minich at gmail.com>  
napisał(a):

> Hello Tomek,
>
>> ... don't make sense. So is there a reason why they aren't excluded
>> from  the "everything in an immutable is immutable" rule?
>>  Tomek
>>
>
> Immutable static member function could be useful...
>
> marking struct or class as const or immutable is the same as marking  
> every its member so. The problem I see is in definition of what const or  
> immutable member function means:
>
> from D specs: "Immutable member functions are guaranteed that the object  
> and anything referred to by the this reference is immutable."
>
> Which applies both to instance and s static functions. I think the above  
> definition should apply only to instance functions. Static const or  
> immutable functions should  be defined as:
>
> Immutable static member functions are guaranteed that the static  
> variables of object and anything referred to by these variables is  
> immutable.
>
> static member function cannot modify member variables already, because  
> they do not have this pointer. They would be only allowed to modify its  
> arguments and global variables; they would be something like pure  
> functions for the congaing type, but not for other world.
>
> I'm not sure how this semantics could be useful in practice, but it  
> seems definitely better to me than erroring out on static function  
> inside immutable type.
>

If by the lot of text above you meant it's a compiler bug, I agree :-)
http://d.puremagic.com/issues/show_bug.cgi?id=3598


Tomek


More information about the Digitalmars-d-learn mailing list