Является ли распространенным шаблоном / идиомой использование свободных функций в качестве псевдоконструкторов, чтобы избежать необходимости явно указывать параметры шаблона?
Например, все знают о std::make_pair
, который использует его параметры для вывода типов pair
:
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.
STL также интенсивно использует это в <functional>
(bind1st
, not1
, ptr_fun
и т. Д ...)
Я обнаружил, что использую это довольно часто, поэтому мне просто интересно, много ли других людей используют его, и есть ли название для этого шаблона?