gpt4 book ai didi

c++ - 在这种情况下,放入 decltype(x) 以指定返回类型的语法是什么

转载 作者:行者123 更新时间:2023-11-30 00:56:28 25 4
gpt4 key购买 nike

我有以下函数,它在另一个容器中创建迭代器的 std::vector:

template <typename T,
template <typename, typename = std::allocator<T>> class Con>
std::vector<typename Con<T>::iterator> make_itervec(Con<T>& v)
{
std::vector<typename Con<T>::iterator> itervec;
for (auto i = v.begin(); i != v.end(); ++i)
{
itervec.push_back(i);
}
return itervec;
}

我想做的是:

template <typename T,
template <typename, typename = std::allocator<T>> class Con>
auto make_itervec(Con<T>& v) -> decltype(x) // This line
{
std::vector<typename Con<T>::iterator> itervec;
for (auto i = v.begin(); i != v.end(); ++i)
{
itervec.push_back(i);
}
return itervec;
}

我要为 x 添加什么才能让它工作?

尝试但失败的尝试:

decltype(std::vector<typename Con<T>::iterator>)
decltype(std::vector<decltype(v)::iterator>)

(另外,我不是这方面的专家,所以欢迎任何其他建议,评论!谢谢。)

最佳答案

你可以使用 std::vector<decltype(v)::iterator>std::vector<decltype(v.begin())> .请注意,没有 decltype std::vector周围因为那个已经是一种类型,而不是变量或表达式。 decltype仅用于获取表达式的类型。

关于c++ - 在这种情况下,放入 decltype(x) 以指定返回类型的语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097944/

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