Congratulations to the D Team!
David Piepgrass
qwertie256 at gmail.com
Wed Jul 11 17:10:23 PDT 2012
On Wednesday, 11 July 2012 at 18:21:24 UTC, Steven Schveighoffer
wrote:
> On Wed, 11 Jul 2012 14:01:44 -0400, deadalnix
> <deadalnix at gmail.com> wrote:
>
>> On 11/07/2012 19:49, Andrei Alexandrescu wrote:
>>> On 7/11/12 1:40 PM, Jakob Ovrum wrote:
>>>> Some classes don't lend themselves to immutability. Let's
>>>> take something
>>>> obvious like a class object representing a dataset in a
>>>> database. How is
>>>> an immutable instance of such a class useful?
>>>
>>> This is a good point. It seems we're subjecting all classes
>>> to certain
>>> limitations for the benefit of a subset of those classes.
>>>
>>> Andrei
>>
>> Did you saw the proposal of feep/tgehr on #d ?
>>
>> It basically state that you can overload a const method with a
>> non const one if :
>> - You don't mutate any data that belong to the parent.
>> - You are prevented to create any immutable instance of that
>> classe or any subclasse.
>
> I don't like this idea. It means you could not use pure
> functions to implicitly convert mutable class instances to
> immutable (something that should be possible today).
I do like the idea. Please explain by example why a pure function
could no longer convert mutable class instances to immutable? The
proposal to restrict the use of immutable is only supposed to
affect classes that specifically request it.
> It also seems to allow abuses. For example:
>
> class A
> {
> private int _x;
> public @property x() const { return _x; }
> }
>
> class B : A
> {
> private int _x2;
> public @property x() { return _x2++; }
> }
I think you would have to mark B somehow to indicate that
immutable(B) is now illegal, e.g.
@mutating class B : A
{
private int _x2;
public @property override x() { return _x2++; }
}
> Now I've completely changed the logistics of the x property so
> that it's essentially become mutable.
This kind of perversion is already possible when x() is const.
x() is allowed to mutate and return a static or global variable.
More information about the Digitalmars-d
mailing list