我希望能够为<< name
,vector
等标准容器编写map
,因此我添加了{{1}的include标头定义例如
operator <<
或template <class T>
inline std::ostream& operator <<(std::ostream& ss, std::vector<T> const& vec)
{
auto it(begin(vec));
if (it != end(vec))
ss << *(it++);
for (; it != end(vec); ++it)
ss << " " << *it;
return ss;
}
但是,要使用它们,我总是必须写std::copy(cont.begin(), cont.end(), std::ostream_iterator<Type>(std::cout, " "));
,因为找不到运算符。
当我使用各种命名空间时,我无法将它们添加到所有命名空间。
理想情况下,我想将它们添加到using ::operator<<;
,这似乎可以与visual studio一起使用,但是根据标准,这是未定义的行为。
这是非正式的支持,即使它不是标准的吗?是否有更好的方法使它们可用而无需在任何地方编写std
并且不知道它将提前使用的命名空间?