나는 ++ 그 소리에 다음 코드를 컴파일 - 600.0.51 :연타 가변 인자 템플릿 특수화 오류 : 비 추론 될 템플릿 매개 변수
template<typename ... Args> struct seq{};
template<typename Seq, size_t c = 1> struct pop_back;
template<typename ... Args> struct pop_back <seq<Args...>, 0>{
typedef seq<Args...> type;
};
template<typename ... Args, typename T, size_t c> struct pop_back <seq<Args..., T>, c>{
typedef typename pop_back<seq<Args...>, c - 1>::type type;
};
을 나는 오류가 있어요 : 클래스 템플릿 부분 특수화는 템플릿 매개 변수 될 수 없습니다 포함을 추론; 이 부분적인 전문화는 결코 사용되지 않을 것입니다. [-Werror]
과 같은 가변적 인 템플릿을 전문화 한 것 같습니다. gcc 4.8.2와 vc 2013은 성공적으로 컴파일 할 수 있습니다. 위와 같이 pop_back을 정의하면 gcc와 vc가 모두 전달됩니다. pop_back을 인스턴스화하면 모두 실패합니다.
내 코드가 비표준입니까? 이 문제를 해결하는 방법은 무엇입니까?
하드 말, 우리가 seq'가 무엇인지'아무 생각이 없기 때문에. – WhozCraig
seq 정의가 누락되었습니다. 그것을 추가했습니다. – wingfire