A unique name of an identifier consists of its namespaces(s), each followed by scope resolution operator, then its class name, and finally the variable itself. Since both namespaces and classes can be nested, the resulting name can be rather lengthy, yet it ensures unique identification:
size_t maxPossibleLength = std::string::npos; // npos is a constant member of string; // string belongs to namespace std
This “fully qualified name” can be shortened by a using-declaration:
using std::string; size_t max = string::npos;