C++ 템플릿 상속과 복사 생성자: 혼란스러운 static_assert
2025-06-10

이 글에서는 C++ 템플릿 상속에서 복사 생성자와 관련된 혼란스러운 문제를 설명합니다. `Derived` 클래스는 `Base` 클래스를 상속받는데, `Base` 클래스의 복사 생성자는 삭제되었습니다. 그러나 `Derived` 클래스는 자체 복사 생성자를 정의합니다. 이 생성자는 복사할 수 없는 `Base` 객체를 복사하려고 시도하지만, `std::is_copy_constructible`은 여전히 true를 반환합니다. 이는 컴파일러가 삭제되지 않은 복사 생성자의 존재만 확인하고 인스턴스화 가능성은 확인하지 않기 때문입니다. 또한 명시적으로 정의된 복사 생성자와 암시적으로 정의된 복사 생성자의 차이점과 복사 생성자 정의를 인라인하지 않는 것의 영향에 대해서도 설명합니다.
개발
복사 생성자