C++현대 C++

템플릿 기본

타입을 매개변수처럼 받아 재사용 가능한 코드를 만드는 C++ 템플릿의 가장 기본적인 형태를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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>타입 매개변수 선언
함수 템플릿알고리즘 재사용
클래스 템플릿자료구조 재사용
타입 일반화여러 타입에서 같은 코드 사용
표준 라이브러리많은 컨테이너가 템플릿 기반

주의할 점

템플릿은 타입 제약이 느슨해 보여도 실제로는 필요한 연산을 만족해야 합니다. 단순히 아무 타입에나 다 맞는 것은 아닙니다.