To help LDC/GDC

Pelle Månsson" <pelle.mansson.ok at gmail.com> Pelle Månsson" <pelle.mansson.ok at gmail.com>
Tue Apr 9 07:06:30 PDT 2013


On Tuesday, 9 April 2013 at 13:49:12 UTC, Dicebot wrote:
> On Tuesday, 9 April 2013 at 12:56:04 UTC, Andrei Alexandrescu 
> wrote:
>>> It is valid code. It is "weak pure". "pure' keyword means both
>>> "strong pure" or "weak pure" depending on function body. Crap.
>>
>> s/body/signature/
>> s/Crap/Awesome/
>
> Not gonna argue latter but former is just wrong.
>
> struct Test
> {
>     int a;
>     pure int foo1() // strong pure
>     {
>         return 42;
>     }
>
>     pure int foo2() // weak pure
>     {
>         return a++;
>     }
> }
>
> Signature is the same for both functions.

Think of all your member functions as non-member functions taking 
the object as a ref parameter.

pure int foo1(ref Test this) {
     return 42;
}

shouldn't be strongly pure (as it can access mutable non local 
state).


More information about the Digitalmars-d mailing list