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
이런 식으로 진행된다고 생각 하면된다.

+

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

신고

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

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