Can pure functions accept const parameters or only invariant ?
mastrost
titi.mastro at free.fr
Mon Dec 29 13:36:50 PST 2008
Hello,
I read in the doc that pure functions can only accept invariant parameters, but it seems that const parameters are also accepted by the compiler. For instance:
import std.stdio;
class A{
int x;
}
pure int f(const A a){
//- as const is transitive, we cannot modify any part of 'a' from here.
// b u t:
//- as 'a' is not invariant, it may be changed in the same time by a non constant view of this
// same data
return a.x;
}
void main(){
A a= new A; //a is not invariant
writefln(f(a));
}
So why is this code accepted by the compiler?
More information about the Digitalmars-d
mailing list