Introduction C++ 컴파일러가 템플릿을 인스턴스화 하는 규칙을 설명하고 있다. 이 규칙은 무척 많은 세부사항으로 이루어져 있다. 각 세부사항들을 알아 본다. Content 1. 템플릿은 두 단계 룩업을 한다. 템플릿 코드는 템플릿을 파싱 할 때, 1차 룩업을 하고, 인스턴스화가 될 때 2차 룩업을 하여, 이름을 찾는다. 1차 룩업을 할 땐, 일반적인 룩업(영역에서 이름 찾기)과 ADL(인자 이름으로 이름 영역 끌고 오기)를 한다. 2차 룩업을 할 땐, 종속된 이름에서 룩업을 하고, 한정되지 않은 이름을 위해서 ADL이 추가로 수행 된다. .. 이 말의 무슨 말이고 하면, 코드를 보자. // ikpil.com class NoTempalte { int notemplate_field; // 1 };..
템플릿 인스턴스화 검색 결과
Introduction 이번 장은 템플릿이 언제 어떻게 실체화 되는지에 대해서 정리한 것이다. 이것을 알아야 하는 이유는 "템플릿의 가시화가 되지 않았기 때문에 컴파일이 되지 않는다" 라는 직관을 길르기 위해서이다. 총 5 파트의 정리가 있는데, 이번 파트에선 "주문형 인스턴스화" 만을 정리 한다. Content 주문형 인스턴스화 우선 "인스턴스화 : instantiation" 이 어떤 단어인지 정의 해야 한다. 이 것은 실체화 라고 이해 하면 된다. C++ Template 에선 템플릿 코드가 실체화 되는 것을 인스턴스화 : instantiation 라고 한다. 여기서 말하는 주문형은, 프로그래머가 요구한 주문에 대해서 인스턴스화 되는 것을 뜻한다. - 원어가 어떻게 되어 있는지는 못찾겠다. : | 쉽게..
템플릿 정의하기에서 정의하는 방법을 정리했다. 정리 되는 도중에 한가지 의문점이 생기는데, 그 의문점은 "도데체 언제 템플릿들이 코드화가 이루어 지는 것일까?" 이다. 당연한 이야기 겠지만, 컴파일러에 의해서 링크가 되기 전에 이루어 질 것이지만, 정확한 시점을 모르면 약간 어리 둥절할 때가 있기 떄문이다. 이 어리둥절함은 컴파일 타임이라는게 전처리기 타임이라는 것도 있고 이진코드 생성 타임도 있고, 문법 검사 타임도 있고, .. 여러 타임이 나누어져 있기 때문에, 템플릿 인스턴스화의 시점에 따라서 템플릿 코드가 달라 질 수 있어, 어리 둥절 하게 된다. 그렇다면, "템플릿 인스턴스화" 란 무엇인가? 템플릿 매개변수에 인자를 넘겨서 클래스 선언을 만드는 과정을 "템플릿 인스턴스화" 라고 한다. 이런 인스..
최근댓글