항목 1: 템플릿 형식 연역 규칙을 숙지하라 템플릿 선언은 다음과 같은 모습입니다. template void f(ParamType param); 호출하는 코드는 다음과 같은 모습니다. f(expr); 예를 들어 템플릿의 선언이 다음과 같습니다. template void f(const T& param); 그리고 이를 다음과 같이 호출한다고 합시다. int x = 0; f(x); T가 expr의 형식일 것이라고 기대합니다. 실제로 위의 예제에서 x는 int이고 T는 int로 연역됩니다. 그러나 항상 그런 것이 아닙니다. T에 대해 연역된 형식은 expr의 형식과 Paramtype의 형태에 의존합니다. 그 형태에 따라 총 세가지 경우로 나뉩니다. ParamType이 포인터 또는 레퍼런스이지만 Universal..