【发布时间】:2018-03-15 20:45:49
【问题描述】:
考虑以下示例代码:
示例:
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,其中提供的解决方案适用于具有超过 1 个元素的向量。
【问题讨论】:
标签: c++ c++11 vector stl overload-resolution