Hello Tomek,
Dnia 07-12-2009 o 11:34:52 Michal Minich <[email protected]>
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.