#include<iostream>
using namespace std;
/*泛化版本*/
template<typename ...args>
class A {
public:
A()
{
printf("泛化版本%p\n", this);
}
};
/*偏特化版本,拆开成一个和一包*/
template <typename first, typename... args>
class A<first,args...> {
public:
A()
{
printf("特化版本<first,args...>%p\n", this);
}
};
/*偏特化版本,拆成只有一个*/
template <typename args>
class A<args> {
public:
A()
{
printf("特化版本A<args>%p\n", this);
}
};
/*偏特化版本,拆成两个*/
template <typename args1,typename args2>
class A<args1,args2> {
public:
A()
{
printf("特化版本A<args1,args2>%p\n", this);
}
};
/*特殊的特化版本,像全特化,但是并不是全特化
可变参类模板没有全特化*/
template<>
class A<int> {
public:
A()
{
printf("特殊的A<int>%p\n", this);
}
};
int main(int argc, char* argv[])
{
A<int> a1;
A<int,float> a2;
A<int, float, double> a3;
A<> a4;
return 0;
}
可变参类模板的特化(偏特化和全特化)
猜你喜欢
转载自blog.csdn.net/qq_38158479/article/details/121445577
今日推荐
周排行