Any*_*orn 15 c++ namespaces conventions operators
如果我有一些为库本地对象定义的重载ostream运算符,那么它们可以转到std命名空间吗?如果我没有在std命名空间中声明它们,那么我必须使用using ns:: operator <<.
using ns:: operator <<
作为一个可能的后续问题,是否有任何运算符应该转到标准或全局命名空间?
Kir*_*sky 24
根据Koenig Lookup(C++标准3.4.2),operator<<将在参数的名称空间中进行搜索.无需在std命名空间中声明它.
operator<<
std
Her*_*ter 21
operator<<( ..., MyClass )应该与...相同的命名空间MyClass.您应该将其视为界面的一部分MyClass,即使它恰好是(必然)非成员函数.
operator<<( ..., MyClass )
MyClass
几个参考:
Joh*_*ing 7
C++标准明确禁止您在std命名空间中声明自己的构造.
归档时间:
15 年,5 月 前
查看次数:
3223 次
最近记录:
13 年,9 月 前