#include <stdio.h>
#include <vector>
#include <deque>
// 1st function
void f(int i, int j = 10){
printf("Hello World what");
};
void f(std::vector<int>){
printf("Hello World vec");
};
void f(std::deque<int>){
printf("Hello World deq");
};
int main()
{
f({});
return 0;
}
如果注释掉第一个函数,在编译时会出现“模糊调用”的错误。如果不注释掉,就会调用第一个函数。为什么“{}”会隐式转换为“int”?
实时示例:https://onlinegdb.com/rkhR0NiBD
initializer_list
构造函数不是显式的。实际上,它们都匹配,因此存在歧义。 - cigien