주의 : 공부하면서 정리하는 것이기 때문에 오류가 있을 수 있습니다.
실습 과제 4-0 :
mpl::or_ 와 mpl::and_ 메타 함수에 대해, 부울 표현식의 평가 단축 행동을 시험하는 테스트를 작성하라.
풀이 :
이 문제는 "평가 단축 행동"의 의미를 이해하고 있는지를 묻고 있다. 책에서는 다음과 같이 표현하고 있다.
내장 연산자 &&, || 과 마찬가지로, mpl::and_ 와 mpl::or_ 는 "평가 단축" 행동을 가진다는 점 역시 알아둘 필요가 있을 것이다.
- C++ Template Metaprogramming, 4.2 정수 래퍼들과 연산들, 91 페이지.
"평가 단축" 이라고 하는 것은 앞의 결과가 false 면 뒤의 결과를 평가하지 않는다는 것이다. 예를 들어 "A && B" 는 둘 다 true 일 때만 true 이므로 && 연산자의 앞의 피연산자인 A 가 false 이면 B 는 볼 필요도 없이 && 의 결과는 false 이다. 이를 통해 평가 비용을 단축할 수 있다.
이를 테스트해 보기 위해서는 bool 을 반환하는 두 개의 메타 함수가 필요하다. 책에서 많이 나오고 있는 boost::is_scalar 를 첫 번째 메타 함수로 만들고, 항상 컴파일 에러를 내는 Error 라는 메타 함수를 만들자. 그리고 나서 mpl::or_ 와 mpl::and_ 의 두 번째 매개변수로 넣는다.
'Programming > CPPTM' 카테고리의 다른 글
C++ Template Metaprogramming 실습 과제 4-5 풀이 (0) | 2012.12.28 |
---|---|
C++ Template Metaprogramming 실습 과제 4-4 풀이 (0) | 2012.12.17 |
C++ Template Metaprogramming 실습 과제 4-3 풀이 (0) | 2012.12.13 |
C++ Template Metaprogramming 실습 과제 4-2 풀이 (0) | 2012.12.13 |
C++ Template Metaprogramming 실습 과제 4-1 풀이 (0) | 2012.12.12 |
C++ Template MetaProgramming 실습 과제 3-7 풀이 (0) | 2012.12.01 |
C++ Template MetaProgramming 실습 과제 3-6 풀이 (0) | 2012.12.01 |
C++ Template MetaProgramming 실습 과제 3-5 풀이 (0) | 2012.11.29 |
C++ Template MetaProgramming 실습 과제 3-4 풀이 보충 (0) | 2012.11.28 |
[ 번역 ] CPPTM Answers - Exercise 3-4 (0) | 2012.11.28 |