2013/4/9 Dicebot <m.strashun@gmail.com>
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.

Both have weak pure. Purity is always calculated only from the function signature.
If you make member function "strong pure", _at least_ it should be qualified with "immutable".

    pure int foo3() immutable // strong pure
    {
        return 10;
    }

Kenji Hara