考虑以下示例:
#include <iostream>
#include <type_traits>
template <class... T> struct types {};
template <int... N> struct values {};
// No error
template <class... T, int... N> void f (types<T...>, values<N...>) {};
// Error
template <class... T, int... N> class s : public types<T...>, values<N...> {};
int main()
{
return 0;
}
为什么第二个没有编译(是编译器错误,还是来自标准),是否有解决方法?
注意:错误是:
main.cpp:8:39: error: parameter pack ‘T’ must be at the end of the template parameter list
template <class... T, int... N> class s : public types<T...>, values<N...> {}