pack_expansion
packExpansion은 팩들을 나열한다고 팩 expansion이라고한다.. 여기서 parameterpack을 다루는 방법들을 소개합니다.
파라미터팩을 사용하는 방법은 파라미터팩패턴뒤 바로 ...을 해주면된다 -> "parameterpack"...
소스 코드
#include <iostream>
using namespace std;
//pack expansion..
int hoo(int n)
{
return -n;
}
void goo(int a, int b, int c)
{
cout << a << " " << b << " " << c << endl;
}
template<typename... Types>
void foo(Types... args)
{
//parameter pack을 사용하는 방법은
//"parameter pack을 사용하는패턴"뒤에 바로 ...을 해주면
// -> 패턴(e1), 패턴(e2), 패턴(e3)..이된다.
int x[] = { args... }; // pack expansion {1, 2, 3}
for (auto n : x)
cout << n << endl;
int y[] = { (++args)... }; // {++e1, ++e2, ++e3} -> 2, 3, 4
//int z[] = { hoo(args...) }; // hoo(1, 2, 3) error
int z[] = { hoo(args)... }; // hoo(1) hoo(2) hoo(3)
goo(hoo(args)...); // goo(hoo(1), hoo(2), hoo(3));
}
int main()
{
foo(1, 2, 3); // Types : int, int, int
// args : 1, 2, 3..
return 0;
}
'c++ > template프로그래밍.' 카테고리의 다른 글
type_trais (0) | 2022.05.18 |
---|---|
template기본문법 (parameter, friend, typename..) (0) | 2022.05.18 |
templateSpecialization, meta template.. (특수화, 메타 템플릿..) (0) | 2022.05.16 |
thintemplate (0) | 2022.05.16 |
템플릿 템플릿 파라마터, 템플릿 메서드, 템플릿 초기화, friend template.. (0) | 2022.05.13 |