Это полностью определяет имя, так что используется только шаблон vector
в пространстве имен std
в глобальном пространстве имен.В основном это означает:
{global namespace}::std::vector<myclass> myvec;
Может быть разница, если у вас есть объекты с одинаковыми именами в разных пространствах имен.Для простого примера, когда это может иметь значение, рассмотрим:
#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
}
};
Поскольку вам не разрешено определять свои собственные сущности в пространстве имен std
, гарантируется, что ::std::vector
всегда будет ссылатьсяконтейнер стандартной библиотеки.std::vector
может относиться к чему-то другому.,