기본 패턴
cpp
template <typename T>
T maxOf(T left, T right) {
return left > right ? left : right;
}설명
- 템플릿은 특정 타입 하나가 아니라 여러 타입에 대해 같은 알고리즘을 재사용하게 해 줍니다.
- 함수 템플릿과 클래스 템플릿이 가장 대표적인 두 형태입니다.
- 표준 라이브러리의
std::vector<T>도 결국 템플릿 기반 설계입니다. - 강력하지만 오류 메시지가 길어질 수 있으므로 처음에는 단순한 예제로 읽는 것이 좋습니다.
짧은 예제
cpp
#include <iostream>
#include <string>
template <typename T>
T maxOf(T left, T right) {
return left > right ? left : right;
}
int main() {
std::cout << maxOf(10, 20) << "\n";
std::cout << maxOf(std::string("aa"), std::string("ab")) << "\n";
}빠른 정리
| 항목 | 설명 |
|---|---|
template <typename T> | 타입 매개변수 선언 |
| 함수 템플릿 | 알고리즘 재사용 |
| 클래스 템플릿 | 자료구조 재사용 |
| 타입 일반화 | 여러 타입에서 같은 코드 사용 |
| 표준 라이브러리 | 많은 컨테이너가 템플릿 기반 |
주의할 점
템플릿은 타입 제약이 느슨해 보여도 실제로는 필요한 연산을 만족해야 합니다. 단순히 아무 타입에나 다 맞는 것은 아닙니다.