我想更多地了解 C++11,所以我编写了我所知道的最简单的 initializer_list 测试,但是在模板内部,这是一个“免费”函数,每次编译时都会出现此错误(clang++ 用于漂亮的格式化)
/home/alex/repo/mine/mlcppl/test/utiltest1.cc:16:3: error: no matching function for call to 'makevec'
mlcppl::makevec<string> ({"alex", "herrmann"});
这是代码:
namespace mlcppl{
template<typename Tp> vector<Tp> makevec (initializer_list<Tp> initlist)
{
vector<Tp> vt;
for(Tp x : initlist)
{
vt.insert(vt.end(), x);
}
return vt;
}
}
这就是它的名字:
#include <util.hh>
int main()
{
vector<string> vc;
vc = makevec<string> ({"alex", "herrmann"});
return 0;
}
我不知道为什么会发生这种情况,有什么建议吗?