Andrei Alexandrescu Wrote: > I think "with" is a very dangerous feature due to the way it hides > symbols. It essentially makes the feeblest attempt at modular reasoning > utterly impossible: > > int x, y; > with (whatever) > { > y += x; > ++x; > } > > What can be said about such code? Nothing. If whatever has or will ever > have fields x or y or both, the names will bind to them; otherwise, > they'll bind to the locals. Non-local code dependency at its finest. > > Maintenance of any type that is being used with "with" becomes a very > dangerous proposition because it can silently change meaning of code. > > I therefore submit that "with" is an extremely dangerous feature and > should be removed from the language. What say you? > > > Andrei
How about we keep in D's tradition and outlaw shadowing instead? I use "with" rarely, but appreciate it when I do.