On 08/20/2011 06:50 PM, Sean Eskapp wrote:
Since the compiler can clearly tell when a function is not const, safe, pure,
or nothrow, why can't they just be assumed, unless proven otherwise?
This sort of inference is already done for function/delegate literals
and template functions.
It is not done for other functions, because eg. their code is not
necessarily available.
int foo(int x) pure; // how would you infer purity here?
Also, if normal functions would infer those attributes, they would be
leaking implementation details all over the place. If a pure
implementation would have to be changed to a non-pure one, all code that
relied on the undocumented but inferred purity would break.