In C++, if two symbols have the same name, they can be resolved by qualifying them. Qualifying the symbols involves specifying them by their fully scoped names using the scope resolution operator (::). The fully qualified name may include the class name if the symbol is a class member, or may include the namespace name if the symbol is within a namespace. When a symbol is properly resolved, there is no ambiguity about the symbol.
Resolving a symbol is necessary when a symbol (name) is used for more than one type. If the symbol is used by itself, the compiler
will have no way of knowing which type the symbol is referring to, and will issue a ambiguity error. Resolving the symbol, by qualifying
it with the scope resolution operator, ::
, will inform the compiler of your intentions.