gpt4 book ai didi

c++ - 使用 scoped_ptr 解压可变参数模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:58 24 4
gpt4 key购买 nike

我正在使用可变参数模板,我想找到解压参数的好方法

template <typename kernel_type, typename ...kernel_types>
class MetaKernel : public MyKernel<kernel_type, kernel_types...> {
public:
MetaKernel (
unsigned int m,
unsigned int n,
const kernel_type& kernel_,
const kernel_types&... kernels_
) :
MyKernel<kernel_type, kernel_types...>(m, n)
{
Ks.set_max_size(sizeof...(kernel_types));
Ks.set_size(sizeof...(kernel_types));
// for each kernels_, add a MyObsKernel to Ks
// Ks[sizeof...(kernel_types)].reset((new MyObsKernel<kernel_type, kernel_types...>(kernels_, prototypes_, m, n))...);
}
private:
array < scoped_ptr < MyObsKernel<kernel_type, kernel_types...> > > Ks;
}

从文档 ( http://en.cppreference.com/w/cpp/language/parameter_pack ) 中,我看到了如何像这样解压:

int dummy[sizeof...(Ts)] = { (std::cout << args, 0)... };

但是当我在处理 scoped_ptr 表时,我需要用“重置”来初始化它。所以我的解决方案不起作用。如何使用 scoped_ptr 解压我的参数?

感谢您的帮助,杰罗姆

最佳答案

您可以使用初始化列表初始化 std::array。以下内容可能有所帮助:https://ideone.com/PTwatb

MetaKernel (unsigned int m, unsigned int n, const kernel_type& kernel_, const kernel_types&... kernels_) :
MyKernel<kernel_type, kernel_types...>(m, n),
Ks({scoped_ptr<MyObsKernel<kernel_type, kernel_types...> >(new MyObsKernel<kernel_type, kernel_types...>(kernels_, kernel_, m, n))...})
{
}

关于c++ - 使用 scoped_ptr 解压可变参数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056055/

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