Purpose-built post 이 포스트는 "Modern C++ Design Chapter 3.13 Typelist를 통한 클래스 생성" 내용을 읽고 정리할 목적으로 만들어졌다. 2부 내용은 생성 후 각 타입 객체에 접근하는 방법에 대해서 정리한 것이다, Content 현재 나는 책 내용과 다르게 진행하고 있다. 책에선 FieldHelper 를 함수로 구현하여, 원하는 요소에 접근을 한다. 나도 마찬가지로 함수 형태로 구현하려 했지만, 한가지 불편한 것이 있었다. 바로 함수는 템플릿 특수화가 되지 않는 점이였다. 나는 이 방법을 해결하기 위해 몇가지 생각을 했었다. (이것은 직관력으로 바로 생각해 낸 것이 아니라, 일전에 내가 고민하다가, 어떨결에 생각난 것이다.) 내가 제안하는 방법은 템플릿 특수화..
Modern C++ Design 검색 결과
만약 typelist에 자료형을 추가할 수 있다면 얼마나 좋을까? 왜 좋은지 모르겠다구? 음.. 내가 설명을 정리를 안한게 있나보다. 처음부터 다시 간다면 6개의 타입을 갖는 typelist를 정의 하기 위해선 매크로를 돌려서 typedef TYPELIST_6(float, int, double, unsigned long, long long, float) typelist6; 로 만들어야 할 것이다. 만들고 사용하다 보니, 동일한 타입에 int만을 추가하고 싶다. 자.. 그러면 어떻게 할까? typedef TYPELIST_7(float, int, double, unsigned long, long long, float, int) typelist7; 자 어떤가? .. 아 귀찮아서 못써먹겠다고? 그렇다. 그래서 ..
type_info 는 타입의 정보를 저장하는 클래스이다. type_info 란 클래스는 typeid라는 연산자를 통하여, 생성되고, 그 참조값이 반환 된다. type_info 에 대한 설명은 일전에 정리하였던 문서(http://ikpil.com/685)를 보자. .. 설명에서 나와 있듯이, 실제로 써서 알 수 있듯이 사용하기 좀 힘든 클래스 이다. 그래서 안드레 알렉산드 레스큐는 좀 더 type_info를 쉽게 사용하고자, 다음의 개념을 정리하였다. 복사 생성자와 기본 생성자가 없어, 컨테이너등에 넣을 수 없으니, 만들어야만 한다. 첫번째에 의해서 포장되었으니, 다른 비교 연산자 등을 재정의해야만 한다. .. 개념을 알았으니, 각자 만들어 보자.( 책에 소스 코드도 역시 .. 선언만 되어 있다. ) 나는..
이 테크닉은 여러 책에서도 소개 되어 있다. 쉽게 말해서 "컴파일 타임 상속 여부 체크" 기능이다. 어떻게 형변환과 상속 가능 여부를 알 수 있는가? 일반적으로 사람의 눈으로 "형변환과 상속 가능 여부" 를 알기 위해선 해당 소스코드를 직접 보면 된다. 마찬가지로 컴파일러도 "볼수 있게" 만들어주면 되는데, 형변환 또는 상속 가능 여부 컴파일러가 "볼 수 있게"를 할려면, 몇가지 트릭이 필요하다. 결론은 알 수 있다는 것이다. 이 방법은 객체가 복사 될 수 있다면 컴파일러가 알아서 복사 하는 원리를 이용한 것이다. 하지만 이것을 일일이 컴파일 해보면서 알아 갈려면 정말 힘든 작업 이다. 그래서 여러 선구자들은 sizeof 트릭을 개발하였고, 이 트릭이 나오게 된다. 참고로 sizeof 연산자는 컴파일 타..
C++의 공부는 무척 어렵다. 관련 라이브러리가 무엇이 있는지 알아가는데만도 많은 시간이 필요할 뿐 아니라, 언어 자체가 지원하는 코딩 방법도 무척 맣기 때문이다. 그러다가 Template MetaProgramming 을 접하게 되면, 이게 C++ 이야 스크립트 언어야 라는 혼란에 빠지며, 한계에 부딛치게 된다. Template 관련 책부터 봐야겠다 싶어서 다음 3개의 책을 구매 했었는데 1. C++ Template MetaProgramming 2. Modern C++ Design 3. C++ Template 이 중에 1번과, 2번은 정말 상상을 초월할 정도로 어려운 책이다. 한 문구를 몇번이나 반복해서 읽어야지만, 70%는 포기하고, 20%는 아리송하게 넘기고, 9%는 그러겠지 하며, 단 1% 이해만 ..
최근댓글