프로그래밍 일반/C++ 프로그래밍

[Effective Modern C++] 형식 연역(type deduction)

지노윈 2020. 8. 15. 12:00
반응형

형식 연역이 일어나는 경우는 다음의 경우입니다.

C++98 : template만 존재

C++11 : auto, decltype 추가

C++14 : auto와 decltype를 사용할 수 있는 문맥 확장, decltype(auto)

[C++] decltype 과 auto 참고해 주세요.

 

 형식 연역의 범위가 증가한 덕분에 자명하거나 이미 언급된 형식들을 여러 번 일일이 지정해야하는 경우가 크게 줄었습니다. 코드의 한 곳만 수정하면 그 변화가 형식 연역을 통해 다른 장소들로 자동으로 전파됩니다. 그러나 코드의 의미를 추론하기는 좀 더 어려워졌습니다. 컴파일러가 연역하는 형식이 독자가 언뜻 보고 추측하는 것과 다른 경우가 있기 때문입니다. 형식 연역이 일어나는 방식을 확실히 이해해야야 효과적인 프로그래밍을 할 수 있습니다. 

저는 deduction을 연역이 아니라 추론으로 쓰고 싶지만 책에서 연역이라고 하였기에 그대로 연역이라 부르겠습니다.

항목 1: 템플릿 형식 연역 규칙을 숙지하라

항목 2: auto의 형식 연역 규칙에 숙지하라

항목 3: decltype의 작동 방식을 숙지하라

항목 4: 연역된 형식을 파악하는 방법을 알아두라

 

항목 4의 방식으로 형식 연역된 결과를 파악할 수 있는 도구가 있지만 도구일 뿐입니다. 항목1~3의 형식 연역 규칙을 숙지하는 것이 중요합니다.