ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++11 tuple implementation
    공부/c++ 2015. 12. 30. 11:15

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

    +

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

    '공부 > c++' 카테고리의 다른 글

    CPPCon 2016 The strange details of std::string at Facebook  (3) 2017.03.28
    fgets vs ReadFile  (1) 2015.07.28

    댓글

Designed by Tistory.