I think I get what you're trying to say, but you may have picked a bad example, here:

  #define foo(a) a = 12

Yes, but this is more a theoretical problems while references are common in C++.