Inflearn Community Q&A
typecast 강의 관련 질문입니다.
Written on
·
191
0
template<typename T, typename... U> struct Length<TypeList<T, U...>> { enum { value = 1 + Length<TypeList<U...>>::value }; }; int32 len1 = Length<TypeList<Mage, Knight>>::value; 위 코드에서
Length<TypeList<Mage, Knight>>가 처음 호출되게 되면 T = Mage, U = Knight가 되어
value = 1(Mage) + Length<(Knight=>)TypeList<U...>>::value가 된다고 알고있습니다. 그런데
template<typename T, typename... U> struct Length<TypeList<T, U...>> { }
로 Length 구조체 자체가 T,와 가변인자 U를 받는데 어떻게
value = 1 + Length<TypeList<U...>>::value 에서 가변인자 U...하나만 받을 수 있는지 궁금합니다.
재귀호출이 되려면
Length<TypeList<Mage, Knight>>::value; 처럼 TypeList에 T에 해당하는 것과 U에 해당하는것을 모두 넣어야하지 않나요?
networkMMORPGwindows-server
Answer 1
1
Rookiss
Instructor
Length<TypeList<Mage, Knight>>::value; 처럼 TypeList에
T에 해당하는 것과 U에 해당하는것을 모두 넣어야하지 않나요?
그건 아니구요 1개를 뺀 나머지가 포인트입니다.
A, B, C라면 Length(A, B, C) = 1 + Length(B + C) = 1 + 1 + Length(C)느낌인 것이죠.






template<typename T, typename... U>struct Length<TypeList<U...>>{ enum { value = 1 + Length<TypeList<U...>>::value }; };