template<typename T>
void show(T value)
{
cout << value << "\n";
}
int x = 0;
show(x);
- 템플릿 매개변수 리스트는 단지 T밖에 없다.
- 함수 매개변수 리스트는 단지 value밖에 없다.
template<typename... Args>
void show2(Args... args)
{
show2(value...);
}
- value...가 다시 함수 매개변수들을 넣어준다.
- 하지만 여기서 들어온 모든 매개변수들을 다시 다 넣기 때문에 무한재귀하게된다.
매개변수 팩을 언팩하는 재귀 이용
void show2() {} //안에서 함수를 재귀하기때문에 미리 선언해준다
//매개변수가 2개 이상일 경우
template<typename T, typename... Args>
void show2(const T& value, const Args&... args)
{
cout << value << "\n"; //첫번째 값을 출력
show2(args...); //나머지 값을 입력
//여기서 첫번째 값은 value였기때문에 하나씩 매개변수가 줄어들게됨
}
int x = 2;
double y = 2.5;
double z = 66.5;
show(x);
show2(x, y, z);
- 첫번째 매개변수가 비워질 때까지 재귀한다.
'C++ > Basic' 카테고리의 다른 글
vector와 list의 차이점 (0) | 2021.09.16 |
---|---|
[C++] new와 malloc의 차이 (0) | 2021.09.15 |
[C++] 람다 (0) | 2021.08.24 |
[C++] fstream으로 입력 출력 (0) | 2021.08.19 |
[C++] cin, get, getline (0) | 2021.08.17 |