Во время разговора о boost::bind
было отмечено, что std::bind1st
существует в C++03, но "почти непригоден для использования".
Я не могу найти ничего твердого, чтобы поддержать это.
В в boost::bind
документации говорится:
boost::bind — это обобщение стандартных функций std::bind1st и std::bind2nd. Он поддерживает произвольные функциональные объекты, функции, указатели на функции и указатели на функции-члены и может привязывать любой аргумент к определенному значению или направлять входные аргументы в произвольные позиции. bind не предъявляет никаких требований к объекту функции; в частности, ему не нужны стандартные определения типов result_type, first_argument_type и second_argument_type.
возможно, предполагается, что эти ограничения действительно применяются к std::bind1st
.
Помимо очевидного ограничения на количество аргументов, в чем есть преимущества boost::bind
перед std::bind1st
/std::bind2nd
? Есть ли смысл в утверждении, что std::bind1st
«почти непригодна для использования» в C++03?