Я хотел бы использовать std::make_pair
для использования, например, с. std::bind2nd
, чтобы я получил унарный функциональный объект, который я мог бы использовать, например, с. std::transform
.
Прямо сейчас я использую
template <typename T, typename U>
struct pair_creator : std::binary_function<T, U, std::pair<T, U> >
{
std::pair<T, U> operator()( T arg1, U arg2 ) const {
return std::make_pair( arg1, arg2 );
}
};
// ...
std::transform( start1, end2, start2, std::bind2nd( pair_creator<int, bool>(), true ) );
но мне интересно - есть ли более простой способ сделать std::make_pair
(или, возможно, любую другую двоичную функцию) пригодной для использования со связывателями, кроме как путем написания небольших классов-оболочек, таких как pair_creator
, вручную?
Мне нужно решение на C ++ 03 (по какой-то непонятной причине stackoverflow всегда переписывает мой тег c ++ 0x в c ++ 11 при сохранении сообщения. ..).