компилирует следующий код с лязгом ++ - 600.0.51:Clang ошибка VARIADIC специализация шаблона: без выводим параметр шаблона
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