Generally, namespaces are open so it is perfectly legal to expand existing namespaces with additional declarations and definitions in several files. The only exception to the rule is namespace std. According to the C++ Standard, the result of modifying namespace std with additional declarations–let alone a removal of existing ones–is undefined and should be avoided. This restriction may seem arbitrary but it’s just common sense; any attempt to tamper with namespace std undermines the very concept of a namespace dedicated exclusively to standard declarations.