gpt4 book ai didi

c++ - 在可变参数模板中包含相同类型的数组

转载 作者:行者123 更新时间:2023-11-28 06:16:31 24 4
gpt4 key购买 nike

我正在尝试用 C++ 编写可变参数模板,它可以在编译时推断类型并为我提供任何指定的操作。例如,我希望对作为参数传递的相同类型的元素求和。这是我到目前为止的进展 -

template <typename T>
T sum(T &v) { return v; }
template <typename T, typename... Ts>
auto sum(T &v, Ts... rest) {
return v + sum(rest...);
}

用法-

int a = sum(1,2,3);

要求-

int a[] = {1,2,3};
sum(1,2,3,a); // Need to pass array of same type and get the result.

任何帮助将不胜感激。

最佳答案

您可以使用以下内容:

template <typename T>
T sum(const T& v) { return v; }

// special case for array
template <typename T, std::size_t N>
T sum(const T (&v)[N]) { return std::accumulate(std::begin(v), std::end(v), T{}); }

template <typename T, typename... Ts>
auto sum(const T& v, const Ts&... rest) {
return sum(v) + sum(rest...);
}

Live demo

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

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