위 [Code1] 실행 결과는 아래처럼 나온다.
이전 글에서 말했듯이 컴파일러는 프로그래머의 생각을 완전히 이해하지 않는다. (S.T.U.P.I.D)
정답은
Max<const double& a, const double& b> 전문화 버전 사용
왜애애애?? (개발자니까 항상 의문 갖는 습관을 기르자!)
- 호출 순서에 규칙이 있기 때문이다!
1. '전문화된 함수' 와 맞는지 검사한다.
2. '템플릿 함수' 와 맞는지 검사한다.
3. '일반 함수' 와 맞는지 검사한다.
위 순서를 잘 기억하고, '전문화 함수'를 만들도록 하자!
안그러면 힘든 버그를 만들 수 있다..