提问者:小点点

为什么pow()不键入“using std::pow();”或“std::pow(x,y);”就能工作?


我可以使用带有#includepow(),而不使用using关键字或::运算符。 为什么?


共1个答案

匿名用户

来自标准的[headers]/4

除第20条至第33条和附件D中所述外,每个标题cname的内容与C标准库(第2条)中规定的相应标题NAME.H的内容相同。 然而,在C++标准库中,声明(除了在C中定义为宏的名称之外)在名称空间STD的名称空间范围(6.3.6)内。 没有说明这些名称(包括条款21到条款33和附件D中添加的任何重载)是否首先在全局名称空间范围内声明,然后通过显式using-declarations注入到名称空间std中(10.3.3)。

基本上,该标准允许c头中的函数成为全局范围的一部分; 然而,他们并不是必须的。