#include<iostream>
using namespace std;
template <typename ...args>
class A {
public:
A()
{
printf("泛化版本this = %p\n", this);
}
};
template <typename first,typename... args>
class A<first,args...> {
public:
A(first one, args... part)
: m_o(part...), m_i(one)
{
std::cout << m_i << std::endl;
printf("偏特化版本this = %p\n", this);
}
first m_i;
A<args...> m_o; //组合关系
};
int main(int argc, char* argv[])
{
A<int, int, int> obj(1, 2, 4);
return 0;
}
/*类似这种感觉,类与类之间的组合关系
class A {
public:
A(){}
};
class A<int> {
public:
A(){}
A<> m_o;
};
class A<int,int> {
public:
A(){}
A<int> m_o;
};
class A<int,int,int> {
public:
A(){}
A<int,int> m_o;
};
*/
可变参类模板参数包展开(通过递归组合关系展开参数包)
猜你喜欢
转载自blog.csdn.net/qq_38158479/article/details/121455340
今日推荐
周排行