This fully qualifies the name, so that only the vector
template in the std
namespace in the global namespace is used. It basically means:
{global namespace}::std::vector<myclass> myvec;
There can be a difference when you have entities with the same name in different namespaces. For a simple example of when this could matter, consider:
#include <vector>
namespace ns
{
namespace std
{
template <typename T> class vector { };
}
void f()
{
std::vector<int> v1; // refers to our vector defined above
::std::vector<int> v2; // refers to the vector in the Standard Library
}
};
Since you aren't allowed to define your own entities in the std
namespace, it is guaranteed that ::std::vector
will always refer to the Standard Library container. std::vector
could possibly refer to something else. .
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…