Следующий код дает мне ошибку компиляции:Вложенный шаблон класса полной специализации по сравнению с частичной специализации
error: explicit specialization in non-namespace scope 'struct Apply' template < >
^
#include <iostream>
struct Apply
{
template < typename ...BaseClasses>
struct Inheritance;
template < typename FirstBaseClass, typename ...OtherBaseClasses>
struct Inheritance< FirstBaseClass, OtherBaseClasses... > : FirstBaseClass
, Inheritance<OtherBaseClasses...>
{
};
template < >
struct Inheritance< >
{
};
};
struct A{ int a; };
struct B{ int b; };
struct C{ int c; };
struct Example : Apply::Inheritance< A, B, C >
{
void print() const
{
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}
};
int main()
{
Example ex;
ex.print();
return 0;
}
В другом посте я прочитал, что эта проблема является только полная специализация шаблона и что с частичный шаблон специализации Я мог бы исправить это. Но как я могу изменить рекурсию наследования в моем коде, чтобы достичь этого? Я попытался, но я только сломал это плохо ...
Спасибо! Я пробовал все, кроме самой простой вещи! – nyarlathotep108