This repository is useful to practice the fundamental conception of design pattern.
Namespaces provide a method for precenting name conflicts in large projects.
More generally, a declaration that appears in any namespace scope and introduces a name using unqualified identifier always introduces a member into the namespace it's in and not to any other namespace. The execptions are explicit instantiations and explicit speciallizations of a primary template that is defined in an inline namespace: because they do not introduce a new name, they may use unqualified-id in an enclosing namespace.