【发布时间】:2017-07-25 14:47:54
【问题描述】:
在下面的代码中,两个版本的 print 方法都存在,第一个调用解析为带有 initializer_list 的调用。如果我用 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++ 中重载解析的工作原理。
标签: c++ c++11 vector initialization