특수화(specializtion) : C++ Template 특수화를 뜻하며, 이 특수화는 메타프로그래밍의 분기(if 문 같은 거)로 많이 쓰인다. 


기본 템플릿(primary template) : 일반 C++ Template 을 뜻한다. 


인스턴스화(instantiation) : 진짜로 깨어난 코드를 말한다. 컴파일러는 깨어난 코드만 문법 검사 등을 처리 한다. 평소의 템플릿 코드는 잠자는 코드이지만, 그 잠자는 코드를 그냥 사용 했을 때, 컴파일러는 템플릿 코드를 깨워주고, 문법 검사도 해준다. 즉, 인스턴스화는 "깨어난 코드" 로 봐도 무방하다.


블로브(blob) : 클래스가 멤버함수나 멤버 값들을 가지고 있을 때, 블로브 라고 한다. 


메타 자료(metadata) : C++ Template 에서 매개변수로 쓰일 수 있는 것들을 말한다. 타입과 컴파일 타임에 알수 있는 상수가 메타자료에 속한다.


다형성(polymorphism) : 동일한 타입으로 다른 타입을 제어 할 수 있을 때, 다형성을 가진다 라고 C++ 에선 말한다. 이것은 음.. 컴파일-타임 다형성과 런-타임 다형성 두개가 있는데, 메타 프로그래밍에선 "컴파일-타임 다형성"만 사용 한다.


메타함수(metafunction) : 컴파일 타임에 호출할 수 있는 함수를 말한다. C++ 에선 클래스와 클래스 템플릿이 메타 함수이다.


수치 메타함수(numerical metafunction) : 수치 값을 벹어나는 메타함수를 뜻한다.


무항 메타함수(nullary metafunction) : 책에선 "공개적으로 접근 가능한 ::type을 가진 클래스라면 어떤 것이라도 무항 메타함수" 라 하는데, 개인적으론, 일반 클래스에 ::type이 public 으로 되어 있을 경우, 무항 메타함수라 보는게 더 좋을 듯 싶다.


특질(trait) : 이건 잘 모르겠다. 템플릿 특수화로 분기 시킨다. 이것은 연관 있다고 볼수 있다. 연관 있는것은 한가지 특징을 따르는 것이고, 이것을 특질이라고 한다. 로 내 머리속은 이해 하고 있다...


type traits : .. boost 라이브러르의 일종으로 메타 프로그래밍의 .. 산술연산 같은 녀석이다.


총평

.. 음~ 이 책은 그 어떤 책보다 재미있으면서 생소하다. .. C++ 은 절대로 .. 한가지 언어만 있는게 아니다. 절대로..

신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요