具有不同可变参数参数的模板类元组

问题描述 投票:0回答:1

我正在尝试构造一个使用不同参数模板化的类的元组,如下所示,但不知道如何实现。

template<class T>
struct A
{
    A(T d) : m_t(d) {}

private:
    double m_t;
};

template<class... Ts>
struct B
{
    std::tuple<A<Ts>...> m_tuple;
    
    template<class... Args>
    B(Args&&... args)
    {
        // How can I do:
        // N = number of Args
        // m_tuple = {A<Args[0]>(args[0]), A<Args[1]>(args[1]), ..., A<Args[N]>(args[N])};
    }
};
c++ constructor tuples
1个回答
0
投票

您可以使用包扩展,如下所示。另请注意,我们使用 memberinitializer list 来进行

m_tuple
的初始化,而不是在 ctor 体内进行赋值:

这里我们使用

std::forward
:

template<class... Args>
B(Args&&... args): m_tuple(std::forward<Args>(args)...)
{
        
}
© www.soinside.com 2019 - 2024. All rights reserved.