与this question类似,我如何测试类Impl
是否从模板类BaseTempl
(即class Impl : public BaseTempl<...>{ ... };
)(没有指定模板参数)公开继承?检查C++类是否从模板类公开继承匿名参数
但是,与上述问题不同,如果继承不公开,我希望测试仍然能够编译(并返回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’
的可能的复制[性状检查模板类的某些特化是否是特定类的基类](http://stackoverflow.com/questions/25845536/trait-to-check-if-some-specialization-of-template-class-is-base-类OF-特别) – Orient