Hello Ellery,

How does dmd resolve the declaration/expression ambiguity?


Could you elaborate? I'm not understanding the problem.


import tango.io.Stdout;
void main(){
int[4] i = [1,2,3,4];
T(t); // compiler: I think this is an expression *barf*

I don't think this can be interpreted as a declaration

t(i[])(i[]); //compiler: I think this is a declaration *barf*

nor that

}
class T{
public T opCall(int[] i){
Stdout(i).newline;
return this;
}
}

the only problem case I know of is:

a * b = d;

where this can be a decl of a pointer to type a called b and set to d
or the result of the expression a times b getting assigned d (operator overloading can make this valid).


Reply via email to