SiegeLord wrote: > Gives an error. I don't see any problem here: > > a * b; // always a pointer declaration > (a * b); // always a binary expression There isn't one. C++ decides if a*b=c; is a declaration or expression based on whether 'a' is a type or a variable. That requires semantic analysis. D's rule does not.