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