Hola, hasta donde he podido comprobar eso no es cierto cuando los operadores no son compatibles
por ejemplo
Código:
template <typename T>
bool func(T a, T b){
if (a > b) return false;
return true;
}
esto sería válido para int, float, char y cualquier tipo que implemente el operador ">"
pero si en alguna parte del código llamas a la función definiéndola como "string" entonces
tendrás errores en tiempo de linkado porque string no acepta el operador ">"
la solución que he hecho es una pequeña sobrecarga del template, uno para todos los tipos simples y otra para string
Yo también pensaba como tú , pero el compilador me lo tira cuando linko