Hello,

J'ai un peu mal à saisir le rôle de bind2nd.

Soit l'exemple suivant, issu de CPlusPlus :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
// bind2nd example
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
 
int main () {
  int numbers[] = {10,-20,-30,40,-50};
  int cx;
  cx = count_if ( numbers, numbers+5, bind2nd(less<int>(),0) );
  cout << "There are " << cx << " negative elements.\n";
  return 0;
}
Dites-moi si je me plante :

count_if travaille avec un prédicat unaire, et ne passe donc au foncteur qu'un seul argument, l'élément courant, et attend un booléen.

less<>, foncteur binaire, compare l'unique argument envoyé par count_if, et la valeur 0, puis renvoie un booléen, pour satisfaire count_if.

L'inversion des deux arguments de bind2nd aurait nécessité l'utilisation de bind1st.

J'ai bon ?