#include <iostream>
using namespace std;

struct Base
{
	
};

struct D1 : Base
{
	
};
struct D2 : Base
{
	void bar() const
	{
		std::cout << "D2::bar" << std::endl;
	}
};

struct D3 : D1, D2
{
	
};

Base const * foo(D3 const * d3)
{
	return static_cast<const D2*>(d3);
}


int main()
{
	D3 d3;
	Base const *res = foo(&d3);
	static_cast<D2 const *>(res)->bar();
}