2009.12.29 00:26 책 정리/C++ Template

사설

티스토리 임시저장 본 으로 유지하고 있다가 다 날렸슴.. 내 3시간.. 절대쌍교의 가의신공이 생각나는군. 배운게 있다면, 독립적 구성으로 4단계로 구분짓고 저장하는 습관을 기르면 괜찮겠군. 이라고 생각 됨.


템플릿에서 이름을 평가하는 규칙이 왜 중요한가?

가뜩이나 C++에서 이름을 평가하는 방법이 어렵다. 그래서 템플릿까지 끼면 더 어렵다. 어려운 것을 모르고 지나가면, 큰코 다친다. 그래서 중요하다. 만약 C/C++을 공부한 사람이라면, "이게 왜 어려운데?" 라고 반문할 수 있다. 상대적으로 어려운 것이니 그러려니 하자.(운동하고 있는 문체가 운동하고 있는지를 관찰하려면, 다른 운동을 하는 물체와 비교 할 수 밖에 없는 이치와 같다. - 아인슈타인)

템플릿에서 이름을 평가하는 규칙을 알기 전에, 몇가지 3가지 단어만 풀이하고 넘어간다. 왜냐하면 이러한 단어가 사용 되기 때문이다.

식별자(Identifier) : 영문자와 "_" 와 숫자 로 이루어진 이름으로, 숫자로 시작할 수 없다. 쉽게 생각해 C++에서 사용되는 모든 이름 들이다. 이것을 설명한 이유는 "저 식별자가 어떤 이름으로 평가되는가?" 란 표현들이 있기 때문이다.

한정된 이름(Qualified Name) : 그 이름이 보이는 영역을 같이 표기한 이름을 뜻한다. 예를 들어 std 네임스페이스에 있는 string 의 경우 std::string 으로 지정함으로써 std 에서만 string 을 찾는다. 마찬가지로 . -> 을 같이 사용한 이름 역시 한정된 이름에 속한다. 이는 나중에 알겠지만, 템플릿 속에서 이름 평가가 힘들기 때문에 한정된 이름을 쓸 수 밖에 없을 때가 있기에, 이 개념을 알고 있어야 한다.

종속 이름(Dependent Name) : 템플릿 파라미터와 어떻게든 연관된 이름을 모조리 다 종속 이름이라고 한다. 한정된 이름일 지라도 템플릿 파라미터와 연관 되어 있다면, 종속 이름이다. 종속이름은 이름을 평가하기 힘들다.(.. 컴파일러 제작자의 삶을 무척 피곤하게 한다는 설도 있다.)


책에선 몇가지 더 있는데, 이 3가지만 알면 되고, 나머지 모르는 단어가 나오면 그때 찾아 보겠다.

나머진 나중에 정리해야겠다. 완전 의욕 상실이다.



저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요