我正在阅读 Stroustrup 的书,关于重载和相关歧义的部分。
有一个例子如下:
void f1(char);
void f1(long);
void k(int i)
{
f1(i); //ambiguous: f1(char) or f1(long)
}
正如评论所述,这个电话是模棱两可的。为什么?
本书上一节陈述了基于匹配形式参数和实际参数的 5 条规则。那么上述函数调用不应该符合关于“促销”的规则 2 吗?我的猜测是“我”应该被提升为长,就是这样。
根据评论,似乎 int 到 char 的转换(降级?)也符合规则 2?