在下面的代码中,对于两个版本的print方法,第一个调用将解析为initializer_list。如果我用initializer_list注释掉这个定义,程序会无缝地使用矢量版本。在第一种情况下,我期待编译器抱怨!编译器如何在vector和initializer_list之间做出决定?
#include <iostream>
#include <vector>
using namespace std;
void print(const vector<int>& v1){
cout << "vector \n";
}
void print(const initializer_list<int>& il) {
cout << "init list \n";
}
int main() {
print({1,2,3,4,5});
return 0;
}
这就是重载解析在C++中的工作原理。 – 101010