Run-time type information and dynamic_cast
RTTI(런타임 타입 정보) RTTI는 런타임시에 객체의 타입을 확인하는 C++의 메커니즘이다. 대표적으로 dynamic_cast, typeid를 들 수 있다. 이를 이해하기 위해선 먼저 dynamic_cast와 static_cast의 차이를 이해하여야 한다. C++ 버전의 Type introspection 개념이다....
Thinking of strut member list
구조체 멤버 리스트에 대한 고찰 c++에서는 일련의 데이터를 묶어서 저장하기 위하여 사용자 정의 타입인 구조체를 이용한다. 구조체를 구성하는 멤버 리스트들은 메모리에 순서대로 저장된다. (Data structure alignment에 의하여 저장된다. 즉, padding이...
Recurisve Template에 member function 추가하기 (2)
Recursive template를 활용하여 pack struct 구현 이후 해당 struct에 member function을 구현해보자. 우선적으로 pack의 size를 구현하는 것은 재귀 호출을 통하여 구현이 가능하다. 하지만 generic하게 Pack의 member variable에 적용할 수 있도록...
Capturing struct member pointer
ORM을 구현하기 위해선 struct의 member type, 정확히는 member type의 pointer를 저장할 수 있어야 한다. 아래는 template을 이용하여 struct의 member pointer를 저장하도록 구현한 예제이다. #include <iostream> namespace type { template<class O,...
Recursive template를 이용한 tuple struct 제작
C++에서는 서로 다른 타입의 데이터를 저장하기위해 std::tuple을 제공한다. std::tuple은 그 자체로써 유용하지만 제네릭 프로그래밍을 공부하기에도 중요한 역할을 한다. 실제 std::tuple과 같이 서로 다른 타입의 데이터를 저장하기 위한 구조체를 만들기 위해서는...