gpt4 book ai didi

c++ - 恰好有 n 个参数的可变参数模板

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:21 25 4
gpt4 key购买 nike

我想制作一个恰好有 N 个参数的可变参数模板,其中 N 也是一个模板参数。例如,

template <int N, typename T[N]>
void function(T t[N]) {
// do stuff with t[0] through t[N-1]
}

(我意识到上面的语法无效)

我知道实现此目的的一种方法是使用 static_assertsizeof...(ArgsT)其中 ArgsT是可变参数模板定义(即 template <typename ...ArgsT> )。

我只是想知道是否有更好的方法,不一定涉及static_assert .

最佳答案

您可以使用 std::enable_if 而不是 static_assert:

template <std::size_t N, typename ...Args>
auto function(Args&&... args)
-> typename std::enable_if<N == sizeof...(Args), void>::type
{
...
}

更新:也可以在构造函数中使用它,其中 N 是类的模板参数。

template <std::size_t N>
struct foobar
{
template <typename ...Args, typename = typename std::enable_if<N == sizeof...(Args), void>::type>
foobar(Args&&... args) { ... }
};

关于c++ - 恰好有 n 个参数的可变参数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458498/

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