在下面的代碼中,對於兩個版本的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