¿Es un patrón/idioma común utilizar funciones gratuitas como pseudoconstructores para evitar tener que especificar explícitamente los parámetros de la plantilla?Uso de la función gratuita como pseudoconstructores para aprovechar la deducción del parámetro de la plantilla
Por ejemplo, todo el mundo sabe acerca de std::make_pair
, que utiliza sus parámetros para deducir las pair
tipos:
template <class A, class B>
std::pair<A, B> make_pair(A a, B b)
{
return std::pair<A, B>(a, b);
}
// This allows you to call make_pair(1, 2),
// instead of having to type pair<int, int>(1, 2)
// as you can't get type deduction from the constructor.
El STL también hace un uso intensivo de esto en <functional>
(bind1st
, not1
, ptr_fun
, etc ...)
Me encuentro usando esto con bastante frecuencia, entonces me preguntaba si muchas otras personas lo usan, y si hay un nombre para este patrón?
Yo ciertamente prefiero el "generador de objetos", porque la "función del generador" ya tiene un significado matemático. –
@Poita_ de acuerdo. Ahora veo que es un nombre bien conocido y parte de los documentos de refuerzo, así que creo que también los llamaré generadores de objetos :) –
Me encanta este idioma, y en combinación con 'auto' puedes hacer complejas construcciones de plantillas sin que en realidad sea explícitamente especificando un parámetro de plantilla. – GManNickG