È un modello/idioma comune utilizzare le funzioni libere come pseudo-costruttori per evitare di specificare esplicitamente i parametri del modello?Utilizzo della funzione libera come pseudo-costruttori per sfruttare la deduzione dei parametri del modello
Per esempio, tutti sanno di std::make_pair
, che utilizza i suoi parametri di dedurre le pair
tipi:
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.
Lo STL fa anche un uso pesante di questo <functional>
(bind1st
, not1
, ptr_fun
, ecc ...)
Mi trovo ad usarlo abbastanza spesso, quindi mi stavo chiedendo se molte altre persone lo usano, e se c'è un nome per questo modello?
Preferisco certamente "generatore di oggetti", perché "funzione generatore" ha già un significato matematico. –
@Poita_ accettato. Ora vedo che è un nome ben conosciuto e parte dei documenti di boost, quindi penso che li chiamerò anche generatori di oggetti :) –
Adoro questo idioma e, in combinazione con 'auto', puoi creare complesse costruzioni di modelli senza mai esplicitamente specificando un parametro del modello. – GManNickG