引用using声明引入的函数的句子是什么意思?

Pup*_*in 4 c++ c++03

我正在学习C++ 03标准,现在正在阅读[7.3.3]/11,但我无法理解以下段落:

如果命名空间范围或块范围中的函数声明与using声明引入的函数具有相同的名称和相同的参数类型,并且声明未声明相同的函数,则程序格式错误.

我在任何地方都没有找到任何这种情况的例子,我不明白这段经文的含义.

Alp*_*ron 5

这意味着:

namespace namespace_1
{
    void foo(int number);
}
using namespace_1::foo;
void foo(int roll_no);
Run Code Online (Sandbox Code Playgroud)

这意味着该计划格式不正确.我认为这意味着该功能会让人感到困惑.在某一点上,函数定义将使用传递的int作为整数(通用),但在另一种情况下,我们将其用作roll_no.

这也会导致重载函数匹配的模糊性.

您引用的来源在您引用的行的下方给出了一个示例:

namespace B {
  void f(int);
  void f(double);
}
namespace C {
  void f(int);
  void f(double);
  void f(char);
}
void h() {
  using B::f;       // B::f(int) and B::f(double)
  using C::f;       // C::f(int), C::f(double), and C::f(char)
  f('h');           // calls C::f(char)
  f(1);             // error: ambiguous: B::f(int) or C::f(int)?
  void f(int);      // error: f(int) conflicts with C::f(int) and B::f(int)
}
Run Code Online (Sandbox Code Playgroud)

  • 我使用C++的次数越多,我似乎越少使用命名空间作为快捷方式,而且我对代码的使用越多. (2认同)