【发布时间】:2016-03-01 03:31:23
【问题描述】:
类似于this question,如何在不指定模板参数的情况下测试Impl 类公开继承自模板类BaseTempl(即class Impl : public BaseTempl< ... >{ ... };)?
然而,与上述问题不同的是,如果继承不是公开的,我希望测试仍能编译(并返回 false)。
理想情况下,代码可以让我做这样的事情:
class alpha : public BaseTempl< int >{};
class bravo : BaseTempl< int >{};
class charlie{};
class delta : public BaseTempl< int >, public charlie {};
class echo : public delta {};
int main(){
publicly_inherits_from < alpha, BaseTempl > (); // true
publicly_inherits_from < bravo, BaseTempl > (); // false
publicly_inherits_from < charlie, BaseTempl > (); // false
publicly_inherits_from < delta, BaseTempl > (); // true
publicly_inherits_from < echo, BaseTempl > (); // true
}
当我尝试编译上述代码时,来自链接问题的答案给出了以下错误:
error: ‘BaseTempl<int>’ is an inaccessible base of ‘bravo’
【问题讨论】:
标签: c++ templates c++11 inheritance c++14