클래스 템플릿이 컴파일에서 실행될 때까지의 과정에 대해서 궁금한 점이 몇 가지 있습니다.
첫째, 클래스 템플릿의 정의는 언제 바이너리 코드로 변환되나요?
둘째, 해당 클래스 템플릿으로 선언된 객체가 있을 때 그에 대한 클래스의 정의와 멤버함수들은 어떠한 방식으로 두 번째 코드와 결합되는 것인가요? 그리고 그 시점이 컴파일시인가요? 그리고 인자로 받은 타입들에 따른 정의와 멤버함수바이너리 코드를 만들어내는 것인가요? 아니면 정의부에 타입을 껴맞우어서 그에 해당하는 멤버함수 코드를 찍어내는 것인가요?
셋째, 명시적 구체화라는 것은 객체의 선언 없이 정의부와 멤버함수를 바이너리리 코드로 만드는 것인가요? 그리고 그 시점은 컴파일시인가요?
넷째, 특수화라는 것도 객체의 선언 없이 정의부와 멤버함수를 바이너리 코드로 만드는 것인가요? 그리고 그 시점은 컴파일시인가요? 이 경우에는 왠지 컴파일 시점같긴 한데요.