C++ 可变模板-有没有避免重复的方法

C++ 可变模板-有没有避免重复的方法,c++,variadic-templates,C++,Variadic Templates,在代码中(仅粘贴和复制),是否有方法避免重复/列出模板参数(代码中标记的行): #包括 使用名称空间std; 样板 结构nullptr_ { 空参数(T&obj,V&…args) { nullptr_hlp(对象、参数…); } 样板 静态空区无PTR_hlp(A&A); { a=空PTR; } 样板 静态无效nullptr_hlp(A&A,Vs&…参数) { a=空PTR; nullptr_hlp(args…); } }; 类X:nullptr\uu//有没有一种方法可以只使用nullptr\

在代码中(仅粘贴和复制),是否有方法避免重复/列出模板参数(代码中标记的行):

#包括
使用名称空间std;
样板
结构nullptr_
{
空参数(T&obj,V&…args)
{
nullptr_hlp(对象、参数…);
}
样板
静态空区无PTR_hlp(A&A);
{
a=空PTR;
}
样板
静态无效nullptr_hlp(A&A,Vs&…参数)
{
a=空PTR;
nullptr_hlp(args…);
}
};
类X:nullptr\uu//有没有一种方法可以只使用nullptr\uu?
{
int*a;
双*b;
char*c;
typedef nullptr_uuu初始化;
公众:
X():初始化(a,b,c)
{
}
};
int main()
{
X;
返回0;
}

将typedef从类中移到匿名名称空间并将其用于继承如何?

将typedef从类中移到匿名名称空间并将其用于继承如何?

nullptr\ucode>成为
X
中的注入类名,因此,您可以在不使用参数列表的情况下引用它:

class X : nullptr_<int*,double*,char*>//can't do away with the list here, unless you want to typedef it
{

    int* a;
    double* b;
    char* c;
    //typedef nullptr_<decltype(a),decltype(b),decltype(c)> init_; //don't really need this
public:
    X():nullptr_(a,b,c) //can be used without the argument list
    {

    }
};
class X:nullptr\uu//无法删除此处的列表,除非您想键入定义
{
int*a;
双*b;
char*c;
//typedef nullptr\uuinit;//实际上不需要这个
公众:
X():nullptr_389;(a,b,c)//可以在没有参数列表的情况下使用
{
}
};
nullptr\uu
成为
X
中的注入类名,因此您可以在不使用参数列表的情况下引用它:

class X : nullptr_<int*,double*,char*>//can't do away with the list here, unless you want to typedef it
{

    int* a;
    double* b;
    char* c;
    //typedef nullptr_<decltype(a),decltype(b),decltype(c)> init_; //don't really need this
public:
    X():nullptr_(a,b,c) //can be used without the argument list
    {

    }
};
class X:nullptr\uu//无法删除此处的列表,除非您想键入定义
{
int*a;
双*b;
char*c;
//typedef nullptr\uuinit;//实际上不需要这个
公众:
X():nullptr_389;(a,b,c)//可以在没有参数列表的情况下使用
{
}
};

只使用
std::tuple
怎么样?或者更好,在初始化列表中使用
a(),b(),c()
。@KerrekSB这不会起作用。@CoryNelson这是一个选项,但按方法更明确程序员的意图,尽管应该是首选。只使用
std::tuple
?或者更好,使用
a(),b(),c()
在您的初始化列表中。@KerrekSB这将不起作用。@CoryNelson这是一个选项,但by方法更明确程序员的意图,尽管应该是首选。