프로그래밍 일반/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을 연역이 아니라 추론으로 쓰고 싶지만 책에서 연역이라고 하였기에 그대로 연역이라 부르겠습니다.
항목 4의 방식으로 형식 연역된 결과를 파악할 수 있는 도구가 있지만 도구일 뿐입니다. 항목1~3의 형식 연역 규칙을 숙지하는 것이 중요합니다.