타입 조회하기
컴파일 시간에 타입 검사하기
타입 조회하기은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
형식 특성이란?
<type_traits> 헤더를 사용하면 컴파일 시점에 형식에 관한 정보를 확인할 수 있습니다. 각 특성은 상수 ::value 또는 멤버 형식을 노출하는 템플릿입니다.
정수 형식 판별
std::is_integral<T>::value는 int와 char 같은 정수 형식이면 참이고, 그렇지 않으면 거짓입니다.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_integral<int>::value << "\n";
std::cout << std::is_integral<double>::value << "\n";
return 0;
}v 변수 템플릿 단축 표기
C++17에서는 _v 변수 템플릿이 추가되어 ::value 대신 std::is_integral_v<T>라고 작성할 수 있습니다.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_integral_v<long> << "\n";
std::cout << std::is_floating_point_v<float> << "\n";
return 0;
}분류 특성
많은 특성이 형식을 분류합니다.
is_pointeris_referenceis_arrayis_classis_enum
#include <iostream>
#include <type_traits>
struct S {};
int main() {
std::cout << std::is_pointer_v<int*> << "\n";
std::cout << std::is_class_v<S> << "\n";
std::cout << std::is_reference_v<int&> << "\n";
return 0;
}관계 특성
일부 특성은 두 형식을 비교합니다.
is_same<A,B>is_base_of<Base,Derived>is_convertible<From,To>
#include <iostream>
#include <type_traits>
struct Base {};
struct Derived : Base {};
int main() {
std::cout << std::is_same_v<int, int> << "\n";
std::cout << std::is_base_of_v<Base, Derived> << "\n";
return 0;
}속성 특성
속성 특성은 한정자와 기능을 보고합니다.
is_constis_signedis_trivially_copyableis_default_constructible
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::is_const_v<const int> << "\n";
std::cout << std::is_signed_v<unsigned> << "\n";
return 0;
}static_assert에서 특성 사용
특성은 static_assert와 완벽하게 결합하여 컴파일 시점에 요구 사항을 강제할 수 있습니다.
#include <type_traits>
#include <iostream>
template <typename T>
T add(T a, T b) {
static_assert(std::is_arithmetic_v<T>, "T must be a number");
return a + b;
}
int main() {
std::cout << add(2, 3) << "\n";
return 0;
}특성의 작동 방식
특성은 단순한 구조체 템플릿입니다. 일반 템플릿은 false_type을 상속하고, 일치하는 형식을 위한 특수화는 true_type을 상속합니다. 컴파일러가 가장 적합한 일치 항목을 선택합니다.
정수 상수
모든 불리언 특성은 std::integral_constant에서 파생됩니다. true_type과 false_type은 value가 각각 참 또는 거짓인 이 형식의 별칭일 뿐입니다.
#include <iostream>
#include <type_traits>
int main() {
std::cout << std::true_type::value << "\n";
std::cout << std::false_type::value << "\n";
return 0;
}템플릿 내부에서 조회하기
특성을 사용하면 템플릿이 전달받은 형식의 종류에 따라 분기할 수 있습니다. 따라서 정수, 부동 소수점, 포인터, 클래스 형식에 서로 다르게 대응하는 일반 코드를 작성할 수 있습니다.
컴파일 시점에만 처리
특성 조회에는 실행 시간 비용이 없습니다. 컴파일 중에 평가되며 그 결과가 생성된 코드에 반영됩니다.
빠른 확인
C++17의 편의 문법을 떠올려 보십시오.
요약
형식 정보를 조회하는 방법을 배웠습니다.
<type_traits>는 컴파일 시점에 형식에 관한 질문에 답합니다::value또는_v단축 표기가 부울 값을 반환합니다- 분류, 관계, 속성 특성이 있습니다
static_assert와 함께 사용하여 제약을 강제하십시오
자주 묻는 질문
“타입 조회하기” 강의는 무료인가요?
네 — “타입 조회하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“타입 조회하기”에서 뭘 배우나요?
컴파일 시간에 타입 검사하기 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“타입 조회하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 타입 조회하기
- 타입 변환하기
- 조건부 논리
- 사용자 지정 특성 작성하기