-
Effective C++...39일지 2022. 8. 11. 08:02
템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터
명시적 인터페이스와 암시적 인터페이스
기본적으로 소스 코드에서 명시되어 있는 인터페이스를 명시적 인터페이스라고 하고 표현식에서 지원해야 하는 인터페이스를 암시적 인터페이스라고 한다.
다음 코드에서 명시적 인터페이스와 암시적 인터페이스의 예를 확인할 수 있다.
template<typename T>
void doProcessing(T& w)
{
// T는 operator.!=로 someNastyWidget과 비교할 수 있는 연산을 암시적으로 지원하고
// "w.size() > 10 && w != someNastyWidget"의 결과가 bool 이라는 것을 암시적으로 지원한다.
if (w.size() > 10 && w != someNastyWidget) {// T는 복사 생성자, normalize, swap을 명시적으로 지원한다.
T temp(w);
temp.normalize();
temp.swap(w);
}
}
※ 템플릿 객체에서 요구하는 암시적 인터페이스를 그 객체가 지원하지 않으면 사용이 불가능하다.