Tengo un montón de funciones que leen completamente idénticas, excepto una línea de código, que es diferente según el tipo de parámetro de entrada.Plantillas para el código que es similar pero no idéntico?
Ejemplo:
void Func(std::vector<int> input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithStdVector(input);
...
DoSomethingGeneral2();
}
void Func(int input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithInt(input);
...
DoSomethingGeneral2();
}
void Func(std::string input)
{
DoSomethingGeneral1();
...
DoSomethingSpecialWithStdString(input);
...
DoSomethingGeneral2();
}
Me pregunto cómo podría evitar esta duplicación utilizando un mecanismo de plantilla-similares. Si entiendo la "especialización" correctamente, ¿no evita tener el código de las funciones especializadas dos veces?
no podemos dar un paso audaz a menos que se sepa lo que DoSomethingSpecial realmente se supone que debe hacer. ¿Puedes dar más detalles? Si no es realmente adecuado para personalizarlo, tendremos que trabajar para hacerlo dentro de las interfaces generales y ajustarlo desde la perspectiva de la persona que llama. – sarat