
namespace Foo {

	class Deriv {};
	class Another {};
	
	template <typename T>
	Another operator* ( T x, const Deriv& d ) { return Another();}
}
namespace Bar {
	typedef Foo::Deriv MyDeriv;
	MyDeriv operator* (float x, const MyDeriv& d);
}

namespace Bar {
	void f1() {
		Bar::MyDeriv a;
		Bar::MyDeriv b = 3.f * a;
	}
}

void f2() {
	Bar::MyDeriv a; 
	Bar::MyDeriv b = 3.f * a;
}

int main() {
	// your code goes here
	return 0;
}