Effective Modern C++
Deducing Types Item 1: Understand template type deduction 예를 들어 함수 템플릿 선언이 다음과 같다고 하자. template<typename T> void f(const T& param); // ParamType is const T& 그리고 이를 다음과 같이 호출한다. int x = 0; f(x); // call f with an int 이 경우 T는 int로 추론되나 ParamType은 const int&로 추론된다. T에 대해 추론된 타입은 expr 타입 뿐만 아니라 ParamType의 타입에도 의존한다. 타입에 따라 총 3가지 경우로 나뉜다. ParamType이 포인터 또는 참조 형식이지만 보편 참조(universal reference)는 아닌 겨웅 ParamType이 보편 참조인 경우 ParamType이 포인터도 아니고 참조도 아닌 경우 경우 1: ParamType이 포인터 또는 참조 타입이지만 보편 참조는 아님 이 경우 타입 추론은 다음과 같이 진행된다....