You can use enable_if to let the compiler decide which one it should
instantiate. And the argument will be a custom defined type trait. I
think there are facilities to automatically define it on the presence
of a type, there may be soemthing for fucntions as well, but I don't
remember where they live (MPL ?)
 
Here it is:
http://www.nabble.com/compile-time-check-that-a-member-function-exists-td18596485.html