Template Variadic Arguments
가변인자 템플릿
코드
0 0 0 0 0 0 0 0 0 0
int
int
1 2 3
as
asdf
설명
Args
를 Template Parameter Pack 이라 부르고, args
를 Function Parameter Pack 이라고 부름
이 함수에 들어오는 변수에 대해 각각 템플릿을 적용 시킴
args...
- 가변인자 뒤에 … 를 붙이면 가변인자들을 차례로 대입한 것과 같은 결과임
- Expand 라고 함.
- 위 예시에서 보이듯 템플릿에서 가변인자 타입형으로 가능함
Fold Expression
- cpp17 부터 가능하며 재귀식을 컴파일 단계에서 괄호로 처리해줌.
()
로 Wrap 해줘야 컴파일 됨- 위처럼 템플릿에서도 가변인자 타입형으로 가능함.
- 크게 4가지 타입이 있으니 순서 주의
- 식을 E 라고 하고, Args 와 대등한 값을 I 라고 할 때
- \( (E \text{ op } …) => (E_1 \text{ op } (… \text{ op } (E_{n-1} \text{ op } E_n))) \)
- \( (… \text{ op } E) => (((E_1 \text{ op } E_2) \text{ op } … ) \text{ op } E_n) \)
- \( (E \text{ op } … \text{ op } I) => (E_1 \text{ op } (… \text{ op } (E_n \text{ op } I))) \)
- \( (I \text{ op } … \text{ op } E) => (((I \text{ op } E_1) \text{ op } … ) \text{ op } E_n) \)
sizeof...
- 가변인자로 들어온 변수의 갯수를 리턴함
Initializer List
- 가변인자를 초기화 리스트에 넣는 경우 빈 칸은 자동으로 0 으로 채워줌
- 대입으로
aaa = {args...};
이런건 안되는 듯
댓글남기기