Рассказ:
struct A{};
struct B:private A{};
void f(void *){}
void f(A*){}
int main(){
B* b;
f(b);
}
и GCC жалуется
ошибка: «A» - недоступная база «B»
Длинная история:
Чтобы увидеть, является ли класс подклассом (или таким же) другого без использования 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 * версию?