Je voudrais utiliser std::make_pair
utilisable avec par ex. std::bind2nd
afin que j'obtienne un objet fonction unaire que je pourrais utiliser avec, par exemple, std::transform
.Comment est-ce que je peux utiliser std :: make_pair avec std :: bind *?
En ce moment je suis en utilisant
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));
mais je me demande - est-il un moyen plus facile de faire std::make_pair
(ou potentiellement toute autre fonction binaire) utilisable avec les liants, sauf en écrivant petites classes wrapper comme pair_creator
par main?
J'ai besoin d'une solution C++ 03 (pour une raison obscure, stackoverflow réécrit toujours ma balise c++0x en c++11 lors de la sauvegarde du post ...).
C++ 0x était le nom de travail de C++ 11 jusqu'à ce qu'il soit terminé il y a quelques mois. –
@Mike: Ah, c'est logique. Je pensais que la balise 'C++ 0x' devrait aussi correspondre à ma question C++ 03 :-) –