Decay
템플릿을 만들때
- 값(T) 으로 전달 받으면 argument decay 되어 형 변환되어 전달된다.
- 배열: 포인터
- 함수: 함수 포인터
- 참조(&T) 로 전달 받으면 정확히 전달 된다.
- 배열: 배열
- 함수: 함수
- 문자열은 포인터가 아니라 배열
- main: 함수
- &main: 함수 주소
- 하지만 함수는 함수 포인터로 암시적 형 변환 됨.
```cpp
#include
template
int main() { int n = 0; int x[10]; foo(n); // int foo(x); // int [10] foo(“abcd”);// char const [5] foo(main); // int __cdecl(void) } ``` T& 로 만들때 문자열을 보낼 때 혼란스러워 질 수 있다.<p> 이 경우, 문자열 전용 버전을 만들면 된다.<p> 함수를 찾는 순서
- 정확한 타입: 문자열 배열 버전의 함수
- 변환 가능한 타입: 문자열 포인터 버전의 함수
- template 사용
- 가변인자 사용
- error.
댓글남기기