반응형
    
    
    
  XTuple(Couple 선형화 구현)
- Couple 재귀 호출 대신 선형 호출 할 수 있는 패턴 지원
- Couple<int, Couple<int, double>...> -> XTuple<int, int, double...> 형태로 개선
 
- 
Null 클래스 활용(Empty class) - 
멤버 없는 클래스 
- 
크기는 항상 1(sizeof(Null)) 
- 
멤버는 없지만 타입이므로 함수 오버로딩이나 템플릿 인자로 활용 
 
- 
- 
상속 활용 기술 
- 
개수의 제한을 없앨 수 없을까? C+++ Variadic template 
#include <iostream>
#include <type_traits>
using namespace std;
template<typename T, typename U> struct Couple
{
    T v1;
    U v2;
    enum { N = 2 };
};
// 빈 파라미터로 활용하기 위한 empty class
struct Null {};
// 2개이상 5개 미만의 타입전달
template<typename P1,
typename P2,
typename P3 = Null,
typename P4 = Null,
typename P5 = Null> 
class XTuple 
    : public Couple<P1, XTuple<P2, P3, P4, P5, Null>>
{
};
// XTuple 상속을 종료하기 위한 특수화
template<typename P1, typename P2>
class XTuple<P1, P2, Null, Null, Null>
    : public Couple<P1, P2>
{
};
int main()
{
    // Couple을 선형화하여 XTuple 형태로 사용
    XTuple<int, char, long, short, double> t5;
}반응형
    
    
    
  '프로그래밍 언어 > C++' 카테고리의 다른 글
| C++ 템플릿 constexpr 함수(constexpr function) (0) | 2021.01.03 | 
|---|---|
| C++ 템플릿 메타 프로그래밍(Template meta programming) (0) | 2021.01.03 | 
| C++ 템플릿 특수화 예제(Couple) (0) | 2021.01.03 | 
| C++ 템플릿 특수화 예제(IfThenElse/IF/Select, conditional) (0) | 2021.01.03 | 
| C++ 템플릿 특수화/부분 특수화(Template specialization) (0) | 2021.01.02 |