【发布时间】:2019-10-24 14:58:17
【问题描述】:
考虑一下这段代码。
struct A {
int i;
};
struct B {
char c;
};
struct C {
double d;
};
void f(A a);
void f(B b);
void f(C c);
void g()
{
f({5});
}
这里我在f({5}); 中遇到了歧义。但似乎struct A的构造函数与{5}完全匹配,而第二个需要整数提升,而最后一个需要浮点转换。
那么为什么会有歧义呢?
【问题讨论】:
标签: c++ c++11 constructor initializer-list overload-resolution