gpt4 book ai didi

c++ - 这个转发函数中如何自动推导出T?

转载 作者:太空狗 更新时间:2023-10-29 20:57:58 30 4
gpt4 key购买 nike

给定这段代码

template <typename T, typename... Args>
auto make_vector(Args&&... args)
{
return std::vector<T>{std::forward<Args>(args)...};
}

我不想输入 make_vector<int>(1, 2, 3, 4) .如何摆脱 T?

最佳答案

你可以这样做:

template <typename Head, typename... Tail> struct Types{
typedef typename std::decay<Head>::type ReturnType;
//typedef std::decay_t<Head> ReturnType; // C++14 equivalent
};
template <typename... Args>
auto make_vector(Args&&... args)
{

return std::vector<typename Types<Args...>::ReturnType>{std::forward<Args>(args)...};
}

注意,代码选择第一个参数类型作为 vector 模板参数,所有Args类型需要相同或可转换。

关于c++ - 这个转发函数中如何自动推导出T?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868836/

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