在标准名称空间中声明名称的错误做法?
|
我一直在浏览Google C ++样式指南,并发现以下问题:
\“请勿在名称空间std中声明任何内容,甚至不对标准库类进行前向声明。在名称空间std中声明实体是未定义的行为,即,不可移植。要从标准库中声明实体,请包含适当的头文件。”
有人可以使用示例代码解释这意味着什么以及为什么这是未定义的行为吗?
没有找到相关结果
已邀请:
5 个回复
河饶办斜施
为什么?它在名称空间“ 2”中声明一个名为“ 1”的函数。至于为什么可能会引起问题,请考虑:标准库实现可能具有自己的名为
的函数,并且可能由
中的某些组件使用。这样,您的ѭ1可能会比标准库实现的ѭ1更好。
bab
。 您也不应尝试在标准库中转发任何内容。只要标准函数包括默认值,它们就可以(例如)包含附加参数,因此可以用标准方式调用它们。如果尝试自己声明它们,而不是声明现有函数,则可能最终声明一个模棱两可的重载。 底线:是的,使用标准库。当您使用它时,请通过包括标准标头而不是通过尝试编写自己的标头来获得声明。
浩挎
膛嵌墒缅欠
相反,您应该只直接包含标题:
屡倒雷图