Static functions in immutable types...
Michal Minich
michal.minich at gmail.com
Tue Dec 8 01:42:42 PST 2009
Hello Tomek,
> 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
>
I'm glad we agreed it is a bug :-)
How about the semantics I proposed ? If you agree I would include it in the
bug text.
More information about the Digitalmars-d-learn
mailing list