I think C++ has about 20 different ways to bind a language entity to a name? With more arriving in future language revisions. If you know in advance where this evolutionary process is leading, you can plan for it. You can avoid shadow domains, and try to provide universal abstraction mechanisms, which leads to a simpler and more powerful language.