Where should I define operator >> for my specialization of std::pair?

拜拜、爱过 提交于 2019-11-29 03:27:52

Adding an overload of operator>> in namespace std is forbidden, but adding a template specialization is sometimes allowed.

However, there are no user-defined types here, and the operators on standard types are not yours to redefine. Specializing operator>>(istream&, pair<mytype, int>) would be reasonable.


section [namespace.std] (section 17.6.4.2.1 of n3290) says

The behavior of a C++ program is undefined if it adds declarations or definitions to namespace std or to a namespace within namespace std unless otherwise specified. A program may add a template specialization for any standard library template to namespace std only if the declaration depends on a user-defined type and the specialization meets the standard library requirements for the original template and is not explicitly prohibited.

(emphasis mine)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!