#include <iostream>

namespace a
{
	struct Test
	{
	};
}

namespace b
{
	struct Test
	{
	};
	void f(Test &)
	{
		std::cout << "b::f(b::Test)" << std::endl;
	}
	void f(a::Test &, Test &)
	{
		std::cout << "b::f(a::Test, b::Test)" << std::endl;
	}
}

namespace a
{
	void f(Test &)
	{
		std::cout << "a::f(a::Test)" << std::endl;
	}
	void f(Test &, b::Test &)
	{
		std::cout << "a::f(a::Test, b::Test)" << std::endl;
	}
}

int main()
{
	a::Test t1;
	b::Test t2;

	f(t1);
	f(t2);
	//f(t1, t2); // ideone.com/vC1xl9
}
