전체 글 썸네일형 리스트형 [Effective C++] (3) decltype의 작동 방식 숙지하기 * decltype 숙지 decltype은 주어진 이름이나 표현식의 형식을 알려준다. 대부분의 경우는 decltype이 독자가 예측한 바로 그 형식을 말해주지만, 아주 가끔은 예상 밖의 결과를 제공하기 때문에 머리를 긁적이면서 온라인 Q&A 사이트들을 뒤져봐야 하는 사태가 벌어지기도 한다. 대부분의 경우, 뜻밖의 결과로 곤란하지 않은 케이스부터 살펴보도록 한다. 템플릿과 auto의 형식 연역(1), (2)에서 다룬 내용에서 일어났던 일과는 달리, decltype은 주어진 이름이나 표현식의 구체적인 형식을 그대로 말해주는 특징이 있다. const int i = 0; // decltype(i)는 const int bool f(const Widget& w); // decltype(w)는 const Widge&.. 더보기 [Effective C++] (2) auto의 형식 연역 규칙 숙지하기 * auto의 형식 연역 규칙 (1)에서 템플릿 형식 연역을 배웠다면, auto 형식 연역에 관해 알아야 할 것들의 거의 전부를 알고 있는 셈인데, 한 가지 기이한 예외를 제외하고는 auto 형식 연역이 곧 템플릿 형식 연역이라고 생각할 수 있기 때문이다. 어떻게 그럴 수 있는가 의문이 들것이다. 템플릿 형식 연역에는 템플릿과 함수 및 매개변수가 관여하지만, auto는 그런 것들을 전혀 다루지 않으니 말이다. auto가 그런 것들을 다루지 않는 것은 사실이지만, 그것은 중요하지 않다. 템플릿 형식 연역과 auto 형식 연역 사이에는 직접적인 대응 관계가 존재하기 때문이다. 그둘을 문자 그대로 알고리즘적으로 상호 변환할 수도 있다. template void f(ParamType param); 다음과 같은 .. 더보기 [Effective C++] (1) 템플릿 형식 연역 규칙 숙지하기 * 템플릿 형식의 연역 규칙 숙지하기 어떤 복잡한 시스템의 사용자가 그 시스템의 작동 방식은 알지 못해도 그 시스템이 하는 일에 만족한다면, 그 시스템은 설계가 잘 된 것이라 할 수 있다. 그런 관점에서 C++의 템플릿 형식 연역은 성공작이다. 수백 만의 프로그래머들이 템플릿 함수에 인수들을 전달한다. 장점 : 현대적 C++의 아주 강력한 기능 중 하나인 auto가 템플릿에 대한 형식 영역을 기반으로 작동한다. 단점 : 템플릿 형식 연역 규칙들이 auto의 문맥에 적용될 때에는 템플릿에 적용될 때에 비해 덜 직관적인 경우가 있다. 그래서 auto를 잘 활용하려면 auto가 기초하고 있는 템플릿 형식 연역의 면모를 제대로 이해하는 것이 핵심이다. 1) ParamType이 포인터 또는 참조 형식이지만 보편 .. 더보기 이전 1 ··· 5 6 7 8 다음