[C++] 템플릿 특수화
글쓴이: gurumong / 작성시간: 금, 2010/04/30 - 11:04오후
특수화된 템플릿 문법이 왜 필요한것인지 이해못하겠습니다.
책에서 설명하길....
두값을 교환하는(swap함수) 템플릿의 예를 들면서
인자가 특정 구조체이고 부분적인 맴버만 교환하도록 할려고 할때에
특수화가 필요하다고 설명하고있는데
템플릿 보다 우선순위가 높은 일반 함수로 특수화된 템플릿의 목적을 채울수 있을꺼 같은데요
아마 안되니까 특수화가 존재하는거겠죠?
그런데 곰곰히 생각해보아도 잘 모르겠습니다;
Forums:


런타임에 결정되는
컴파일 타임에 결정되는 템플릿은 일반 함수와는 용도가 다릅니다.
함수로 안돼서 특수 템플릿을 쓰는게 아니고, 템플릿을 일관되게 사용하기 위해 특수 템플릿을 쓴다고 봐야 하지 않을까요?
즉, 일반적으로는 템플릿을 쓰다가 특정 타입이나 특정 값에서는 일반 함수를 쓰는 것은 이상하기 때문에.
특수화를 이용하는 경우는,
1, 특정 타입에서 최적화를 이룰 수 있는 경우
2. 특정 타입에서 일반 템플릿으로는 연산을 할 수 없는 경우,
3. recursion 에서 종료 조건(팩토리얼 연산 시 0! 의 값 연산) 등입니다.
클래스 템플릿의
클래스 템플릿의 경우는 템플릿 특수화를 사용하지만
함수 템플릿의 경우는 함수 오버로딩을 주로 사용하는 것으로 알고 있습니다.