Study/CPP

    class template deduction guide

    class template 을 이용하여 생성자를 만들때 가이드를 주어 어떤 생성자를 사용할지 알게 하는 문법이다. 생성자를 '추론' 할 수 있게 도와준다고 하여 deduction guide 라고 하는 것 같다. 아래 코드를 참고해보자. #include #include using namespace std; template class MyDB { public: MyDB() = default; template MyDB(const Container& c) { // some implementation here } private: }; int main() { vector v = {1,2,3,4}; MyDB my(v); return 0; } MyDB class 의 의도는 생성할때 임의의 Container 를 담아 거..

    protected destructor

    delete 를 외부에서 호출할 수 없게 하는 기술 객체를 힙영역에만 생성하게 하는 기술이다. 객체의 소멸자를 protected 영역에 둠으로써, 위 2가지를 가능하게 만든다. 코드를 통해서 살펴보자. #include #include class Book { public: Book() = default; ~Book() = default; void DeleteBook() { delete this; } private: int page {0}; }; int main() { Book *myBook= new Book; Book *myBook2 = new Book; Book book ; // not want to allow declaration of local variables delete myBook2;// not..

    Enum class to type ( int2Type 의 응용)

    개요 integral_constant 는 int2type 이라는 C++ 11 부터 자주 쓰는 테크닉이 C++17 부터 정식 반영된 케이스라고 한다. 페이스북의 모든 소프트웨어 구조를 설계했다고 알려진 개발자가 이전에 integer 를 타입화 시켜 사용하던 테크닉이 정식에 반영된 케이스라고 한다. 나는 이것을 살짝 응용해서, enum class 를 타입화 시키는 방법에 대해서 소개 하려고 한다. enum class enum class는 modern c++ ( c++11 ~ ) 에서 부터 적용된 개념으로 아래와 같이 두가지 특징을 가지고 있다. enum 에 별도의 scope 를 소유할 수 있게 한다. (아래 코드 참조) #include enum class TrafficLight { Red, Blue, Gre..

    EnumClassToType

    Introduction Enum class and int2Type are powerful grammar that modern c++ provides. This post proposes EnumClass2Type which is developed by using enum class and int2Type. As can be inferred by title , This post deals with how to convert enum class to type. enum class The enum class is a powerful new concept in modern c++. The two main features are as follows. We can use same name since each name..