我试图做一个通用的代码,会导致编译错误,如果B不是D的祖先我想出什么样的主意:模板参数不取代
template<typename B, typename D>
struct assert_base_of {
enum {value = sizeof(B::D)};
}
它不起作用。当我称之为'像这样:
assert_base_of<A2,A1>::value;
我得到以下错误(G ++ 4.8.2):
main.cpp:16:22: error: ‘D’ is not a member of ‘A2’
它看起来像模板参数d没有得到取代A1。任何人都可以解释并提出解决方案吗?
什么'static_assert错误(std :: is_base_of :: value,“B必须是D的基数”)? –
我不允许使用std :: is_base_of,即使可以,我仍然想知道为什么D不会被替换:) – pyx
“允许”由谁?如果有人对你可能的解决方案集进行了任意限制,你应该在问题中说明它们,以避免浪费我们的时间。 –