Skip to content

[ Title ] TypeInfo Initialization Failure with Forward Declarations #29

@Winteradio

Description

@Winteradio

1. Issue Overview

리플렉션 시스템의 핵심 객체인 TypeInfo<T>가 전방 선언(Forward Declaration)된 타입에 대해
인스턴스화될 수 없는 컴파일 오류가 발생

이는 헤더 파일 내에서 타입을 완전히 정의하기 전에 리플렉션 정보를 생성하려고 시도할 때 발생하는 Incomplete Type(불완전한 타입) 문제

2. Technical Root Cause (발생 원인)

현재 리플렉션 시스템의 구조상, 헤더에서 TypeInfo가 선언되는 시점에 다음과 같은 제약 조건이 충돌

  • 생성자 초기화의 강제성: 헤더 파일 내에서 TypeInfo<T>의 생성자가 호출되거나 정적(static)으로 초기화되는 구조를 지님
    이 과정에서 컴파일러는 T라는 타입의 실체를 들여다봐야만 함
  • Incomplete Type의 한계: 전방 선언된 타입은 이름만 존재할 뿐, 메모리상의 크기(sizeof)나 정렬 기준(alignof)이 결정되지 않은 상태
    하지만 TypeInfo의 생성자 로직은 메타데이터 추출을 위해 이 정보들을 즉시 요구
  • 컴파일 타임 상수 결정: 리플렉션 정보는 런타임이 아닌 컴파일 타임에 결정되어야 하는 템플릿 기반 정보
    전방 선언만 된 상태에서는 생성자가 참조해야 할 타입의 내부 레이아웃(멤버 변수 위치 등)을 컴파일러가 계산할 수 없으므로,
    초기화 단계에서 에러가 발생하며 컴파일 중단됨

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions