#include "iostream"
using namespace std;
template<typename T, typename TBase>
class TIsBaseFromBase {
private:
static uint8_t check(TBase*) {
return 1;
}
static uint32_t check(void*) {
return 0;
}
public:
enum {
RESULT = (sizeof(uint8_t) == sizeof(check((T*)(NULL))))
};
};
class A {
public:
int a = 1;
};
class B : public A {
public:
int b = 2;
};
class C {
public:
int a = 1;
};
int main() {
std::cout << TIsBaseFromBase<B, A>::RESULT << std::endl;
std::cout << TIsBaseFromBase<C, A>::RESULT << std::endl;
return 0;
}