C++26 Reflection으로 타입 소거의 새 시대를 열다: rjk::duck

Beautiful Type Erasure with C++26 Reflection

C++26의 반영(reflection) 기능을 활용해 타입 소거(type erasure)의 복잡성을 획기적으로 줄인 라이브러리 rjk::duck을 소개합니다. std::any나 std::function보다 복잡한 타입 소거는 보통 100줄 이상의 오류-prone 코드나 Boost.TypeErasure 같은 무거운 라이브러리를 요구했지만, rjk::duck은 단일 헤더로 owning/non-owning 시맨틱, 연산자, 인터페이스 합성, 어댑터, 확장 메서드 등을 지원합니다. 이 글은 태그 생성, vtable 코드 생성, 오버로드 해석, 그리고 duck을 작게 유지하는 상호 변환 트릭을 단계별로 설명하며, C++26 반영의 강력한 활용 사례를 보여줍니다.

반영(reflection)은 아직 멤버 함수를 주입할 수 없게 해주지 않으므로, 우리가 할 수 있는 최선은 duck 클래스가 상속할 수 있는 간단한 래퍼 타입으로 시작하는 것입니다.

이 날의 다른 글

2026-07-14