태그: 메타프로그래밍
11편
-
C++ 템플릿 메타프로그래밍 심화 — SFINAE·타입 특성·태그 디스패치
템플릿 메타프로그래밍(TMP)에서 컴파일러가 오버로드 후보를 거르는 SFINAE 규칙, type_traits의 구현 원리, 태그 디스패치와 if constexpr의 선택 기준, 컴파일 타임 계산을 어디에 둘지를 라이브러리 설계 관점에서 정리합니다.
-
TypeScript 데코레이터: 클래스·메서드·프로퍼티·매개변수 데코레이터와 데코레이터 팩토리
TypeScript 데코레이터를 쓰려면 tsconfig에서 무엇을 켜야 하는지부터 클래스·메서드·프로퍼티·매개변수 데코레이터의 시그니처, 인자를 받는 데코레이터 팩토리까지 설명하고, 로깅·성능 측정·권한 체크·캐싱 예제로 실제 활용법을 보여 줍니다.
-
Python 데코레이터: 동작 원리, functools.wraps, 인자 있는 데코레이터
함수를 감싸는 기본 데코레이터에서 시작해 인자를 받는 데코레이터 팩토리, 캐싱·인증·재시도 데코레이터, 클래스 데코레이터를 차례로 만들어 봅니다. functools.wraps로 이름과 docstring을 보존하는 방법과 여러 데코레이터의 적용 순서도 설명합니다.
-
C++ <type_traits>로 타입 검사·변환하기: SFINAE 원리, enable_if 위치, decay와 커스텀 traits
C++ <type_traits>로 컴파일 타임에 타입을 검사·변환하는 방법을 정리합니다. SFINAE 동작 원리, enable_if 위치별 차이, decay·remove_reference 활용법과 실전 함정을 다룹니다.
-
C++ 태그 디스패칭: iterator_category로 오버로드 고르기와 if constexpr·Concepts 비교
값이 아니라 빈 구조체 타입으로 오버로드를 고르는 태그 디스패칭을 std::distance의 iterator_category 분기 예제로 설명합니다. 타입별 직렬화와 복사 최적화 예제, if constexpr·SFINAE·Concepts와 비교했을 때 언제 이 패턴이 여전히 읽기 쉬운지도 다룹니다.
-
C++ SFINAE vs Concepts | 언제 마이그레이션해야 할까
enable_if로 쓴 SFINAE 코드를 C++20 Concepts와 requires 표현식으로 옮기면 무엇이 좋아지고 무엇이 어려워지는지 같은 예제로 비교합니다. 에러 메시지 품질, 레거시 코드 호환성, 과도한 제약과 순환 의존 같은 마이그레이션 함정을 다룹니다.
-
C++ Expression Templates: 벡터 연산의 임시 객체를 없애는 지연 평가 구현
a + b + c 같은 벡터 연산이 매 단계 임시 객체를 만드는 문제를 Expression Templates로 풀어, 연산을 식 트리로 쌓아 두었다가 대입 시점에 한 번의 루프로 평가하는 방법을 구현합니다. auto로 받았을 때의 댕글링과 앨리어싱 함정도 짚습니다.
-
C++ 메타프로그래밍 고급 | SFINAE·Concepts·constexpr·타입 트레이트 가이드
C++ 메타프로그래밍: SFINAE std::enable_if 타입 제약, Concepts C++20 requires, constexpr 컴파일 타임 연산, 타입 트레이트 std::is_integral.
-
C++ 리플렉션 구현 | 타입 정보·메타데이터·자동 직렬화
구조체마다 to_json·from_json을 손으로 짜는 대신 타입 레지스트리로 멤버 메타데이터를 등록해 직렬화와 설정 로딩을 자동화하는 C++ 리플렉션 구현입니다. 매크로로 반복을 줄이는 법, RTTR 라이브러리, ODR 위반 같은 함정도 다룹니다.
-
C++26 리플렉션 기초: ^^ 연산자, std::meta::info, template for로 멤버 순회하기
C++26에 채택된 정적 리플렉션(P2996)의 실제 문법을 정리합니다. ^^ 연산자와 std::meta::info, identifier_of·nonstatic_data_members_of·access_context, [: :] 스플라이스, template for와 define_static_array, [[=...]] 어노테이션, 컴파일러 지원 현황과 C++20 대안까지 다룹니다.
-
C++ 메타프로그래밍의 진화: Template에서 Constexpr, 그리고 Reflection까지
템플릿 기반 메타프로그래밍에서 constexpr·if constexpr·fold expression·Concepts, 그리고 C++26 Reflection까지 C++ 메타프로그래밍의 흐름을 예제와 흔한 컴파일 에러 중심으로 정리합니다.