다음은 다양한 가변 형식이 아닌 중첩 클래스 템플릿 DEF
을 정의합니다. 형식이 아닌 템플릿 매개 변수는 Ts
에 제공된 형식 인수에 따라 이기종 일 수 있습니다. 다음과 같이이기종 가변 형식이 아닌 템플릿 인수 개수가 유연합니까?
template <typename ...Ts>
struct ABC {
template <Ts ...Xs>
struct DEF {};
};
DEF
객체를 선언 할 수 있습니다 :
ABC<int,bool>::DEF<17,true> x;
내 질문 DEF
제공 비 형 템플릿 인수의 수를 제공 형 템플릿 인수의 수보다 작을 수있다 ABC
? Ts...
이 팩 팽창하기 때문에,
ABC<int,bool>::DEF<17> y;
ABC<int,bool>::DEF< > z;
고맙습니다. 이것이 이것이'Xs '이름의 성질에 어떻게 영향을 주는지 궁금합니다. 당신의 답에서 암시가 * last * 유형에만 이름을 지정하는 것이 아니겠습니까? Clang과 GCC에서 위의 예제에서'Xs ... '를 사용하면'make_tuple (Xs ...)'를 통해'tuple (17, true) '를 채울 수 있습니다. –
user2023370
@user :'Ts ... '가 팩 확장이라고해서'Xs'가 매개 변수 팩이 아니라는 것을 의미하지는 않습니다. :) – Xeo