#include <iostream>
using namespace std;

struct A {};
struct B : A {};

class C {};
class D1 : C {};
class D2 : public C {};

void test_A(A&) {}
void test_C(C&) {}

int main() {
	B b;
	test_A(b); // OK.
	
	D1 d1;
	D2 d2;
	
	//test_C(d1); // FAIL: inaccessible base.
	test_C(d2); // OK. 
	
	return 0;
}