【发布时间】:2020-01-30 01:05:06
【问题描述】:
我想在继承类模板时保留其参数参数的可见性。基类将有大量的模板参数,所以我不想在派生类模板中一直要求那些。使用类型别名是唯一的方法吗?
例如,这不起作用,但如果我将所有内容换成注释行,它就会起作用:
#include <iostream>
template<typename one, typename of, typename very, typename many, typename tparams>
class first {
// public:
// using A = one; //needs to be uncommented to work
};
template<typename class_instance>
class second : public class_instance {
typename class_instance::one m_data;
//typename class_instance::A m_data; // would work if we uncommented
};
int main() {
second<first<int,int,int,int,int>> thing;
return 0;
}
【问题讨论】:
-
基本上,是的。模板参数名称仅在模板扩展中可见。如果您希望它在此之外可见,则需要自己执行(通过为其创建类型别名)。
标签: c++ templates inheritance class-template