【发布时间】:2013-01-13 06:58:51
【问题描述】:
我真的不明白,我以为编译器首先执行大括号中的内容,然后将结果提供给最合适的函数。这里看起来它给了函数一个初始化列表来处理它......
#include <string>
#include <vector>
using namespace std;
void func(vector<string> v) { }
void func(vector<wstring> v) { }
int main() {
func({"apple", "banana"});
}
错误:
<stdin>: In function 'int main()':
<stdin>:11:27: error: call of overloaded 'func(<brace-enclosed initializer list>)' is ambiguous
<stdin>:11:27: note: candidates are:
<stdin>:6:6: note: void func(std::vector<std::basic_string<char> >)
<stdin>:8:6: note: void func(std::vector<std::basic_string<wchar_t> >)
为什么没有调用我的 func(vector<string> v) 重载,我可以这样做吗?
【问题讨论】:
标签: c++ c++11 initializer-list ambiguous