sha*_*oth 7 c++ stl operator-overloading operators
突然在本文中("问题2")我看到一个声明,即C++标准禁止使用STL容器存储类的元素,如果该类有重载的话operator&().
过载operator&() 确实存在问题,但看起来像默认的"地址"操作符可以通过一组看起来很脏的演员表来boost::addressof()轻松使用,这些演员阵容被用于并且被认为是便携式和标准编译器.
为什么operator&()在boost::addressof()解决方法存在的情况下禁止存储在STL容器中的类超载?
在没有查看链接的情况下,我认为这些技巧boost::addressof()是在要求不要为&std lib的容器中保存的对象重载一元前缀之后发明的.
我依旧记得Pete Becker(后来为Dinkumware的标准库实现工作)曾经说过,每个重载地址运算符并希望他们的标准库实现仍然有效的人都应该通过实现这样做的标准库来惩罚.