gpt4 book ai didi

c++ - 具有相同参数类型的可变参数模板函数

转载 作者:可可西里 更新时间:2023-11-01 17:50:17 25 4
gpt4 key购买 nike

我想这样写一个模板函数:

template <typename T>
void f( const T & ...args ) // <-- This doesn't work, unfortunately.
{
std::array<T> arr = { args... };
// and so forth.
}

显然,C++ 不允许这样做,因为需要在 ...args 的左侧有一个模板参数包才能工作。我想要的是一个所有参数类型都相同的模板函数。有没有简单的方法可以做到这一点?

最佳答案

    template <typename ... T>
void f(const T & ... args)
{
std::array<typename std::common_type<T...>::type,
sizeof...(T)> arr = {args...};
}

或来自 std::experimental

   template <typename ... T>
void f(const T & ... args)
{
auto arr = std::experimental::make_array<void>(args...);
}

void 使返回类型成为输入参数的 common_type,否则您可以明确指定您想要的类型(如果您知道的话)。

关于c++ - 具有相同参数类型的可变参数模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273038/

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