以下代码给出了编译错误:
错误:非命名空间范围内的显式特化' struct应用' 模板< >
^
#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;
}
在另一篇文章中,我读到问题只是完整模板专业化,而使用部分模板专业化,我可以解决这个问题。但是如何在代码中更改继承递归来实现此目的呢?我尝试过,但我只打破了它......