C++ 解包到可变构造函数中

C++ 解包到可变构造函数中,c++,c++11,c++14,variadic-templates,C++,C++11,C++14,Variadic Templates,我有一个类TensorMap Egeng3库,其中包含简化的数字列表: class TensorMap{ public: template<typename... T> TensorMap(T&...i){} } ; 以及使用此类型的结构a struct A{ template<unsigned int N> A( NumberList<N> & idx ): m( /* idx(0),idx(1), ....,

我有一个类TensorMap Egeng3库,其中包含简化的数字列表:

class TensorMap{
public:
   template<typename... T>
   TensorMap(T&...i){}
} ;
以及使用此类型的结构a

struct A{
    template<unsigned int N>
    A( NumberList<N> & idx ): m( /* idx(0),idx(1), ...., idx(N-1) */ ) ) {}

    TensorMap m;
};
如何将数字列表NumberList&idx注入变量构造函数。idx的号码访问由操作员i完成。 通过一些漂亮的模板递归,这可能吗? 到目前为止,我还不能想出一个方法来注入这个,嗯


当然,可以在中使用一些std::unique\u ptr并制作模板递归包装器来生成新的TensorMap,但这不是我想要的。

使用委托构造函数和std::index\u序列:


使用委托构造函数和std::index_序列:


是NumberList运算符常量表达式,还是在运行时进行计算?是在运行时进行计算?是NumberList运算符常量表达式,还是在运行时进行计算?是在运行时进行计算?啊,那就是它=棒极了:-应该是N+1可能我不知道它这么容易工作:-,这很漂亮:-事实上,我想要N=元素的数量,但问题不是这样,我把问题保持原样,尽管它有点奇怪maybe@Gabriel在我看来,在网上留下更好的代码样本比另一个更好。N+1的情况无论如何都不有趣,也不是你问题的核心。修复了答案和问题。啊,这就是它=棒极了:-应该是N+1可能我不知道它这么容易工作:-,这很漂亮:-事实上,我想要N=元素的数量,但问题不是这样的,尽管有点奇怪,我还是保留问题的原样maybe@Gabriel在我看来,最好在网上留下更好的代码样本,而不是其他选择。N+1的情况无论如何都不有趣,也不是你问题的核心。修正了答案和问题。
struct A{
public:
    template<unsigned int N>
    A( NumberList<N> & idx ) : A(idx, std::make_index_sequence<N>{}) {}

private:
    template<unsigned int N, std::size_t... Is>
    A( NumberList<N> & idx, std::index_sequence<Is...>) : m(idx(Is)...) {}
public:
    TensorMap m;
};