템플릿은 argument types 의 요구사항 기술을 최소화 한다.
template
= 형판
즉, 사용자가 원하는 타입을 넣어 주면, 알아서 코드를 찍어내는 틀
template <typename T> class Vector { T* data; //...
아래에 정의되는 클래스에 대해 template
을 정의하고 인자로 T(타입명)을 받는다.
클래스 템블릿 인스턴스화(class template instantiation) 란 클래스 탬플릿에 인자를 전달해서 실제 코드를 생성하는 것을 말한다. (템플릿이 인스턴스화 되지 않는다면, 컴파일시 아무런 코드로 변환되지 않음)
template <typename T> T max(T& a, T& b) { // ... } max(1, 0) // T 는 int
매 호출 문장마다 함수를 만드는 것은 아님, 한번 함수가 만들어지면, 다음에는 만들어진 함수를 호출