주의 : 공부하면서 정리한 것이기 때문에 오류가 있을 수 있습니다.
실습 과제 3-1 :
transform 을 이용해서, vector_c< int, 1, 2, 3 > 를 요소 ( 2, 3, 4 ) 를 가진 형식 순차열로 변환하라.
풀이 :
각 요소에 1 씩을 더하는 것이 이 문제의 핵심이다.
3 장을 총정리하는 관점에서 boost 의 메타 함수를 사용하면 다음과 같이 쉽게 문제를 풀 수 있다.
하지만 이런 식으로 풀라고 문제를 낸건 아니지 않을까 하는 찝찝함이 남기는 한다.
여기에서 주의할 것은 isSame 과 isSame2 를 구하기 위해서 boost::is_same 메타 함수를 사용해서는 안 된다는 것이다. vector_c 메타 함수가 불릴 때마다 새로운 type 이 생성되는 것이기 때문에 boost::is_same 을 사용하면 모조리 false 가 나온다. 요소가 같은지를 검사하기 위해서는 mpl::equal 메타 함수를 사용해야만 한다.
'Programming > CPPTM' 카테고리의 다른 글
C++ Template MetaProgramming 실습 과제 3-4 풀이 보충 (0) | 2012.11.28 |
---|---|
[ 번역 ] CPPTM Answers - Exercise 3-4 (0) | 2012.11.28 |
C++ Template MetaProgramming 실습 과제 3-4 풀이. (0) | 2012.11.26 |
C++ Template MetaProgramming 실습 과제 3-3 풀이 (0) | 2012.11.26 |
C++ Template MetaProgramming 실습 과제 3-2 풀이 (0) | 2012.11.25 |
C++ Template MetaProgramming 실습 과제 3-0 풀이 (0) | 2012.11.24 |
First class metadata (0) | 2012.11.22 |
[ 번역 ] Extracting Function Parameter and Return Types in C++ (0) | 2012.11.19 |
C++ Template MetaProgramming 실습 과제 2-3 재구현 (0) | 2012.11.17 |
C++ Template MetaProgramming 실습 과제 2-4 풀이 (1) | 2012.11.16 |