【发布时间】:2017-05-21 07:52:58
【问题描述】:
为什么编译器对doSomething 的前两次调用正常,但使用列表中的两个元素会导致调用不明确?
#include <vector>
#include <string>
void doSomething(const std::vector<std::string>& data) {}
void doSomething(const std::vector<int>& data) {}
int main(int argc, char *argv[])
{
doSomething({"hello"}); // OK
doSomething({"hello", "stack", "overflow"}); // OK
doSomething({"hello", "stack"}); // C2668 'doSomething': ambiguous call
return 0;
}
【问题讨论】:
标签: c++ initializer-list ambiguous overload-resolution