C++11 부터 가변인자 템플릿(variadic template)을 지원하게 되면서 tuple의 구현이 재미있어졌다.

가변인자 템플릿을 지원하기전의 tuple은 최대 10개의 타입을 받는 것 까지 가능했다고 한다.
왜그러냐 하면 아래와 같이 N개 까지의 클래스를 모두 따로 정의해 뒀기 때문이라고 한다...
(VC2010기준 아래는 boost의 tuple)
tuple_macro

C++11 가변인자 템플릿을 이용할 경우 이런식으로 구현 할 수 있다. 

vs2015에 implemetation된 tuple클래스 인데 그냥 최소한의 소스만 가져왔다.
tuple의 각 value는 tuple_val에 저장한다.
tuple class같은 생성자에서 상속 받는 방법을 이용하여 recursive specialization을 사용해 모든 인자들에 대해 specialization을 할 수 있게 해준다.

1, 2, 3, 4 가 있으면
this-1 rest(2,3,4)
this-2 rest(3,4)
this-3 rest(4)
this-4
이런 식으로 진행된다고 생각 하면된다.

+

오늘의 교훈
소스가 막막하면 최소한 동작으로 줄이고 보자
답이 나온다

신고
Creative Commons License
Creative Commons License

WRITTEN BY
Jen6
jen6의 개발, 보안 블로그 까끔가다 쓸대 있는걸 올리려고 노력중

받은 트랙백이 없고 , 댓글이 없습니다.
secret