C++ Template Programming - Intro[1]
C++의 Template 기술은 C++ 에서 가장 신기하고, 재미있고, 깊이있는 분야 입니다. C++로 만들어진 다양한 라이브러리 안에는 Template 을 사용한 고급 코드를 많이 볼수 있습니다. 하지만, Template 은 일반 개발자가 아닌 라이브러리 설계자들이 널리 사용하는 기술이기 때문에, 대부분의 C++ 교육에서는 Template 의 개념 정도만 다루고 있습니다. 그래서, 오픈소스에서 볼수 있는 다양한 고급 기법을 정확히 이해하기는 어려움이 있습니다. 또한, C++의 표준 라이브러리인 STL을 깊이 있게 이해 하기 위해서도 Template 기술은 필수입니다. 이 시리즈는 C++언어의 Template 분야에 대한 다양한 문법과 기법을 배우는 과정입니다.
본 시리즈에서는 다음과 같은 내용을 배울수 있습니다.
- C++ Template과 관련된 다양한 기본/고급 문법을 배우게 됩니다.
- 문법 뿐 아니라 Traits, Lazy Instantiation, Type Selection, declval 등 다양한 기법을 배우게 됩니다.
- SFINAE, enable_if, IfThenElse, Member Detect 등 Template 관련 다양한 C++ IDioms 을 배우게 됩니다.
- CRTP, Thin Template, Policy-Base Design, rebind 등 Template 관련 디자인 기법을 배우게 됩니다.
- C++98/03 뿐 아니라 C++11/14 그리고 C++17/20에서 추가되는 최신 내용도 배우게 됩니다.
실습환경
-
Visual Studio 2019 Professional ( or Community)
-
cI 컴파일러 옵션 : /std:c++latest /nologo /EHsc /Za /MD
- EHsc : 예외 경고 제거
- Za : 확장문법 사용하지 않음
- MD : 표준 라이브러리 DLL 버전 사용
-
boost 설치 (www.boost.org) 후 프로젝트 포함 디렉터리에 추가 및 필요한 헤더 Include, boost 로컬 빌드 후 포함 라이브러리 디렉터리 추가