Kar*_*yan 9 c++ constructor initializer-list overload-resolution c++11
考虑下面的代码。
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});
}
Run Code Online (Sandbox Code Playgroud)
在这里,我感到模棱两可f({5});。但似乎struct A的构造函数与完全匹配{5},而第二个则需要整数提升,而最后一个需要浮点转换。
那么为什么会有歧义呢?