Quote Originally Posted by m37h0d View Post
@ Elysia; indeed, i had considered that, but what if T is an int or other POD type?
I don't see why you can't simply pass the address of an appropriate operator function. Even if it's free, you should be able to call it and pass the arguments.

Code:
template<typename T, typename T2> void foo(T arg, T2& arg2)
{ 
	arg(arg2, 0);
}

class obj
{
public:
	friend void operator + (const obj&, int);
};

void operator + (const obj&, int) {}

int main()
{
	obj myobj;
	foo(&operator+, myobj);
}