반응형

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;
}
반응형

+ Recent posts