On Tuesday, 9 April 2013 at 15:20:48 UTC, Andrei Alexandrescu wrote:
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 are weakly pure.

Andrei

And that is even more surprising as foo2 perfectly matches concept of pure and can be applied all possible optimizations to. It is weird. "weak pure" is useful only to implement "strong pure". "strong pure" is useful only if it can be statically enforced to provide some guarantees. "strong pure" is useless because it shares same annotation with "weak pure".

Reply via email to