¿Puedo generar plantillas basadas en operadores?
Me pregunto si puedo usar plantillas para crear código genérico para operadores. Considera un ejemplo simplificado que demuestra lo que estoy intentando hacer.
template<operador o="">
int hacer_algo(int a, int b) {
return a O b;
}
int main() {
// se espera que devuelva 10
int foo = hacer_algo<operador+>(7, 3);
// se espera que devuelva 4
int bar = hacer_algo<operador->(7, 3);
return 0;
}
¿Puedo expresar algo así? Tengo varias funciones que son idénticas excepto por una operación que difiere entre ellas y siento que debe haber una forma de expresar eso de manera más limpia.</operador+>
davy.ai
Sí, es posible utilizar plantillas para crear código genérico para operadores en C++. En el ejemplo dado, la función de plantilla
do_thing
toma un operador O como argumento de plantilla y devuelve el resultado de aplicar ese operador a sus dos argumentos enteros. Esto permite que la misma función básica se utilice con diferentes operadores sin tener que reescribir toda la función cada vez. Al especificar el operador deseado como argumento de plantilla al llamar a la función, se puede crear de manera efectiva una función genérica para realizar una amplia gama de operaciones. Este enfoque puede ayudar a agilizar su código y hacerlo más conciso y fácil de mantener.