当前位置: 首页> 汽车> 行情 > 【可变参数模板】可变参数类模板的特化

【可变参数模板】可变参数类模板的特化

时间:2025/8/24 13:24:38来源:https://blog.csdn.net/Antonio915/article/details/142204034 浏览次数: 0次

一、可变参数类模板的特化

1.1可变参数类模板的特化

可变参数模板不存在特化,只有偏特化。

以下是一个特化的示例:


//可变参模板的偏特化//泛化版本
template<typename... args>
class myclasst {
public:myclasst() {std::cout << "myclasst泛化版本执行了,this  = " << this << " sizeof...(args) = "<< sizeof...(args) << "\n";}
};//偏特化版本1
template<typename First,typename... Others>
class myclasst<First, Others...> {
public:myclasst() {std::cout << "myclasst<First,Others>偏特化版本执行了,this  = " << this<< " sizeof...(args) = "<< sizeof...(Others) << "\n";}
};//偏特化版本2
template<typename arg>
class myclasst<arg> {
public:myclasst() {std::cout << "myclasst<arg>偏特化版本执行了,this  = " << this << "\n";}};//偏特化版本3
template<typename arg1, typename arg2>
class myclasst<arg1,arg2> {
public:myclasst() {std::cout << "myclasst<arg1,arg2>偏特化版本执行了,this  = " << this << "\n";}
};//偏特化版本4
template<>
class myclasst<> {
public:myclasst() {std::cout << "myclasst<>偏特化版本执行了,this  = " << this << "\n";}
};

可以发现,我们这里的偏特化版本都是基于参数范围上的特化。
调用测试函数:

void Test() {myclasst<>myc0;myclasst<int>myc1;myclasst<int,char>myc2;myclasst<double, int, char>myc3;myclasst<double, int, char,long long>myc4;}

可以发现,调用的顺序是基于偏特化参数范围优先的:
在这里插入图片描述

关键字:【可变参数模板】可变参数类模板的特化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: