void t_function(T& x) {}
위와 같이 템플릿을 만든다면 Rvalue 값을 사용할 때 이 템플릿을 사용하지 못하게 됨.
int val = 4;
t_function(val); // 가능
t_function(4); // 불가능, 적용 대상이 되는 템플릿 함수가 없음.
상수값 대응을 위애 아래처럼 2가지로 나눈다면...
template <typename T>
void t_function(T &x) {}
template <typename T>
void t_function(T x) {}
t_function(x); // 에러, 위 2가지 템플릿 모두 해당되어 ambiguous 오류
t_function(4); // 가능
위 모두 만족시킬수 있는 방법이 Universal References
template <typename T>
void t_function(T&& x) {}
댓글 없음:
댓글 쓰기