短篇故事:
struct A{};
struct B:private A{};
void f(void *){}
void f(A*){}
int main(){
B* b;
f(b);
}
并且 GCC 报错:'A' is an inaccessible base of 'B'</p>
长话短说:要查看一个类是否是另一个类的子类(或相同)而不使用 boost,我会
template<typename B,typename D> struct is_base_or_same_of{
typedef char (&yes)[2] ;
static yes test(const B* b);
static char test(const void* p);
static const D* d();
static const bool value=sizeof(test(d()))==sizeof(yes);
};
情况是一样的
我怎样才能让编译器“更喜欢” void* 版本?