es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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+>

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.