带有参数包的模板专业化

问题描述

我对C ++还是很陌生,但想尝试做一些精美的模板工作。我不确定是否有可能,但我相当有信心实现这一目标的方法。

所以这是问题所在: 我正在调用各种硬件功能,该功能需要多个参数,并且仅因一种参数类型而异:

int Read(HANDLE handle,int location,char* Name,int startindex1,int endindex1,int startindex2,int endindex2,int* rval,Astruct* callback) ;
int Read(HANDLE handle,double* rval,Astruct* callback) ;

Hardware Interface根据索引的值返回标量,数组或矩阵。我真正想要实现的是一个函数,该函数根据我传递的参数数量返回一个Tvector<T>vector<vector<T>>

                T MyReadFunction<T>(HANDLE handle,int index)
        vector<T> MyReadFunction<T>(HANDLE handle,int endindex1   )
vector<vector<T>> MyReadFunction<T>(HANDLE handle,int endindex1
                                                                            int startindex2,int endindex2)

其中T是基本类型,例如intrealfloatdouble

使用3个不同的模板进行专业化是没有问题的,但是我希望以某种方式将其组合。

我的假设是,这可以使用模板专业化来实现,但是我无法解决。我想我应该是这样的:

template<typename T,int... Indexes>
T MyReadFunction (HANDLE handle,Indexes... myIndex){}

template<>
int MyReadFunction (HANDLE handle,int myindex)
{
    int rval = 0; 
    Read (handle,location,name,myindex,myindey,&rval,NULL) ;
    return rval;
}

这是一只两只头的野兽。我迫切需要明确实现这3种情况,以避免滥用,但也想知道如何根据参数包的大小来改变参数包的大小,从而实现模板专业化。

我正在使用VS 2019最新的msvc ++

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)