[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "
" 특성정보는 C++ 표준 라이브러리에서 발에 치일 정도로 흔히 쓰인다! "
- 특성정보 클래스는 컴파일 도중에 사용할 수 있는 타입 관련 정보를 만들어낸다. 또한 특성정보 클래스는 템플릿 및 템플릿 특수 버전을 사용하여 구현한다!
- 함수 오버로딩 기법과 결합하여 특성정보 클래스를 사용하면, 컴파일 타임에 결정되는 타입별 if...else 점검문을 구사할 수 있다!
컴파일 도중에 어떤 주어진 타입의 정보를 얻을 수 있게 하는 객체를 지칭한다
- 특성정보는 C++에 미리 정의된 문법 구조가 아닌, C++ 프로그래머들이 따르는 구현 기법이며 관례이다
특성정보는 기본 제공 타입과 사용자 정의 타입에서 모두 돌아가야 한다
template<typename IterT>
struct iterator_traits; // 반복자 타입에 대한 정보를 나타내는 템플릿
template<typename IterT, typename DistT>
void doAdvance(IterT& iter, DistT d, random_access_iterator_tag)
{
iter += d;
}
...
template<typename IterT, typename DistT>
void Advance(IterT& iter, DistT d)
{
doAdvance
{
iter, d, typename iterator_traits<IterT>::iterator_category()
};
}