gpt4 book ai didi

模板内的 C++ 初始值设定项列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:04 25 4
gpt4 key购买 nike

我想更多地了解 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;
}

我不知道为什么会这样,有什么建议吗?

最佳答案

这适用于 g++ (Ideone):

#include <vector>
#include <string>

template<typename Tp> std::vector<Tp> makevec (std::initializer_list<Tp> initlist) { return initlist; }

int main() { makevec<std::string> ({"alex", "herrmann"}); }

哪个 clang++?

关于模板内的 C++ 初始值设定项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com