Insert obligatory link: http://drdobbs.com/184401197Very insightful article.
While i tend to code that way it is not as pretty in C++ as it looks on paper when you use namespaces.
namespace ns { struct S { void b(); } void b(S s); } auto s = ns::S; s.b() // fine ns::b(s) // uh.. It gets much worse when S is somewhere deep in many namespaces.ADL helps but it is also unreliable. I think D doesn't have this issue.