考虑以下示例代码初始化:C++ 11单元素矢量在一个函数调用
实施例:
void print(int n) {
cout << "element print\n";
}
void print(vector<int> vec) {
cout << "vector print\n";
}
int main() {
/* call 1 */ print(2);
/* call 2 */ print({2});
std::vector<int> v = {2};
/* call 3 */ print(v);
/* call 4 */ print(std::vector<int>{2});
return 0;
}
产生以下输出:
element print
element print
vector print
vector print
为什么调用print
函数(在上面的例子中调用2)正在匹配函数接受单个值?我在这个调用中创建了一个向量(包含一个元素),所以如果它不匹配以向量作为输入调用print
?
这是部分讨论的in an other question其中提供的解决方案适用于具有多个元素的向量。
重要提示:支撑初始化器列表是*无类型*,而不是'std :: initializer_list'。所以你的第一句话是错误的。 – Rakete1111