我正在学习C++ 03标准,现在正在阅读[7.3.3]/11,但我无法理解以下段落:
如果命名空间范围或块范围中的函数声明与using声明引入的函数具有相同的名称和相同的参数类型,并且声明未声明相同的函数,则程序格式错误.
我在任何地方都没有找到任何这种情况的例子,我不明白这段经文的含义.
这意味着:
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)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |