je regarde l'exemple serveur fonctionnant avec boost::asio :
http://www.boost.org/doc/libs/1_51_0...hat_server.cpp

il y a une ligne qui me pose problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 acceptor_.async_accept(new_session->socket(),
        boost::bind(&chat_server::handle_accept, this, new_session,
          boost::asio::placeholders::error));
la partie que je n'arrive pas à saisir est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
boost::bind(&chat_server::handle_accept, this, new_session, boost::asio::placeholders::error)
le premier argument &chat_server::handle_accept correspond à la fonction q'uon bind (dites moi si j'ai tort : mais il s'agit bien d'une référence ? donc il appelle la fonction non pas depuis un objet mais depuis la classe ?)

cette fonction est défini comme tel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 void handle_accept(chat_session_ptr session,
      const boost::system::error_code& error)
  {
    if (!error)
    {
      session->start();
    }
 
    start_accept();
  }
moi je ne vois que deux arguments, or dans le bind il y en a trois après &chat_server::handle_accept... pourriez vous m'expliquer ?

de plus ne connaissant pas bind j'ai regardé cette page :
http://www.boost.org/doc/libs/1_51_0...bind/bind.html

prenons l'exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
struct F
{
    int operator()(int a, int b) { return a - b; }
    bool operator()(long a, long b) { return a == b; }
};
 
F f;
 
int x = 104;
 
bind<int>(f, _1, _1)(x);
je ne vois pas l'intérêt de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
bind<int>(f, _1, _1)(x);
au lie de
pourriez-vous aussi m'expliquer ?

de manière général je n'arrive pas à trouver d'exemple d'utilisation dans lequel je me dirais : « ha, ben là boost::bind va m'aider!! » auriez-vous en tête un exemple d'utilisation ?