	#include <iostream>
	#include <type_traits>
	
	class A {
	public:
	   A() {}
	   A(const A&) {}
	   A(int) {}
	};
	
	class B{};
	
	template<typename T>
	typename std::enable_if
		< std::is_base_of<A, T>::value
		, A >::type
	operator+(T& lhs,int rhs){
		typename std::enable_if
		< std::is_base_of<A, T>::value
		, A >::type ret;
	    // stuff
	    return ret;
	}

    int main() {
	  A u;
	  A v = u+1;
	}
