1. Issue Overview
리플렉션 시스템의 핵심 객체인 TypeInfo<T>가 전방 선언(Forward Declaration)된 타입에 대해
인스턴스화될 수 없는 컴파일 오류가 발생
이는 헤더 파일 내에서 타입을 완전히 정의하기 전에 리플렉션 정보를 생성하려고 시도할 때 발생하는 Incomplete Type(불완전한 타입) 문제
2. Technical Root Cause (발생 원인)
현재 리플렉션 시스템의 구조상, 헤더에서 TypeInfo가 선언되는 시점에 다음과 같은 제약 조건이 충돌
- 생성자 초기화의 강제성: 헤더 파일 내에서
TypeInfo<T>의 생성자가 호출되거나 정적(static)으로 초기화되는 구조를 지님
이 과정에서 컴파일러는 T라는 타입의 실체를 들여다봐야만 함
- Incomplete Type의 한계: 전방 선언된 타입은 이름만 존재할 뿐, 메모리상의 크기(
sizeof)나 정렬 기준(alignof)이 결정되지 않은 상태
하지만 TypeInfo의 생성자 로직은 메타데이터 추출을 위해 이 정보들을 즉시 요구
- 컴파일 타임 상수 결정: 리플렉션 정보는 런타임이 아닌 컴파일 타임에 결정되어야 하는 템플릿 기반 정보
전방 선언만 된 상태에서는 생성자가 참조해야 할 타입의 내부 레이아웃(멤버 변수 위치 등)을 컴파일러가 계산할 수 없으므로,
초기화 단계에서 에러가 발생하며 컴파일 중단됨