이 포스트를 만든 목적
- 일반화 함수자를 만들려고 템플릿을 쓰다가 막히는 부분이 있어, 기록해 두려고
이 포스트의 준비물
- VMware Player 3.1.2 build-301548
- Debian 5 64 bit
- Vim
- gcc 4.1.2
내용
다음의 예제를 보고, 왜 컴파일이 안되는지 설명할 수 있는가? 할 수 있다면 해 봐라.
설명
스스로 설명을 달아보고, 이 설명을 보는게 좋다.
- 함수를 변수에 할당하는 방법은, 레퍼런스(void (&rf)(void) = f)로 받거나 포인터(void (*pf)(void) = f) 방법 밖에 없다.
- template_functor 가 f 를 할당 받기 위해선 const Func& func 중 Func가 함수 형만 있어야 한다.
그래야 함수를 레퍼런스로 받을수 있기 때문이다.(레퍼런스로 받는다 해도 어차피 포인터 겠지만.)
- 그래서 22 라인에서 함수형 만으로는 함수에 대한 포인터를 할당할 수 없다고 컴파일 에러가 뜬다.
요약 정리하면
- 인자 추론은 f 가 무엇이냐에 따라 추론되는 것이 아닌, 템플릿 함수의 인자를 어떻게 선언 했냐에 따라 템플린 인자가 추론되는 것을 의미한다.
여담
- 아마도 내일이 되면, 이것을 잊어 먹겠지. 애초에 기억하기 힘든것을 잊어 먹는게 정상이다.
- 잊어 먹었다고 모른다고 속상해 할 것 없다. 왜냐하면 다시 이해하면 되는 그런 것이다.
'연구실 > 파편화된 기록들' 카테고리의 다른 글
lunit - Unit Testing Framework for Lua (1) | 2011.02.27 |
---|---|
ORA-12520 (2) | 2011.02.05 |
루아(lua) 변수 범위, C 와 다른 체계를 쓴다. (0) | 2010.12.23 |
C/C++ 전처리 매크로(Predefined Macros) __DATE__, __TIME_ 값을 정수로 바꾸기 (0) | 2010.12.09 |
C++ safe delete, SAFE_DELETE, safe release 등 구현하기 (2) | 2010.12.03 |
10진 정수를 헥사 코드, 헥스 코드, hex code 문자열로 만드는 방법 (0) | 2010.10.14 |
리눅스 컴파일 환경 구축하기 - Debian 편 (0) | 2010.10.12 |
소멸자로 객체를 초기화 하는 작업은 무척 위험하다. (2) | 2010.07.31 |
C++ 비가상 함수를 상속 클래스가 재정의 했을 경우 (4) | 2010.07.13 |
for while 사용 차이점 (0) | 2010.03.23 |
최근댓글