프로그래밍 언어/C & C++ 정리
템플릿에 사용할 타입의 요건
뽀또치즈맛
2025. 6. 20. 08:59
템플릿에 사용할 타입의 요건
타입에 독립적인 코드를 작성하려면 여기에 적용할 타입에 대해 어느정도 고려해야 한다.
예를 들어 Grid 템플릿을 작성할 때 T에 지정한 타입 원소는 언제든지 소멸될 수 있고,
복제 / 이동 대입할 수 있다고 간주한다.
어떤 클래스 템플릿을 인스턴스화할 때 그 템플릿에 있는 연산을 모두 지원하지 않으면 컴파일 에러가 발생하며,
출력되는 에러 메시지도 이해하기 힘들게 표현된다.
하지만 인스턴스화할 타입이 클래스 템플릿의 모든 메서드에서 사용되는 연산을 완전히 지원하지 않더라도 앞서 포스팅한 선택적 인스턴스화를 이용하여 특정 메서드만 사용하게 만드는 식으로 처리할 수 있다.
C++20부터 콘셉트(concepts)라는 기능이 추가되었는데,
이를 이용하면 템플릿 매개변수에 대한 요구사항을 컴파일러가 해석하고
검증할 수 있도록 작성할 수 있다.
컴파일러는
템플릿을 인스턴스화하기 위해 전달한 템플릿 인수가
콘셉트에 명시된 요구사항을 만족하지 못하면 에러를 발생시키는데,
이때 출력되는 메시지는 기존보다 이해하기 쉽다.