1 2 3 4 5 6 7 8 9 10 11 12 13
#include <type_traits> template<typename U, typename V, typename = std::enable_if_t<!std::is_convertible<U, V>::value && !std::is_same<U, V>::value> > void foo(U &&u, V &&v) { }