Bonjour tout le monde

J'essaye de faire quelquechose comme cela,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
#include <boost/asio.hpp>
#include <boost/tuple/tuple.hpp>
 
template <typename AuthorizedMessages>
struct serializated_socket
{
        template <typename T, typename Handler>
        void handle_read_data(const boost::system::error_code& e, T& t, boost::tuple<Handler> handler)
        {}
};
 
template <typename AuthorizedMessages, typename T, typename Handler>
struct select_read_data
{
        typedef serializated_socket<AuthorizedMessages> socket_type;
 
        select_read_data(socket_type * socket) :
                socket_(socket) {};
 
        void operator() (Handler handler)
        {
                void (socket_type::*f)(
                                const boost::system::error_code&,
                                T&,
                                boost::tuple<Handler>);
                /*
                 * Leads to
                 * test1.cc: In member function ‘void select_read_data<AuthorizedMessages, T, Handler>::operator()(Handler)’:
                * test1.cc:33: error: expected primary-expression before ‘,’ token
            * test1.cc:33: error: expected primary-expression before ‘>’ token
                *test1.cc:33: error: expected primary-expression before ‘)’ token
                */
                f = & (socket_type::handle_read_data<T, Handler>);
        }
 
        socket_type* socket_;
};
 
struct A {};
struct B {};
struct C {};
 
int main()
{
        serializated_socket<A> sock;
        select_read_data<A, B, C> select(&sock);
}
Mais manifestement il y'a quelquechose que je ne saisis pas sur comment déclarer proprement un pointeur vers cette méthode (le code réel c'est dans des appels asynchrone de boost::asio). Est-ce que c'est possible de déclarer quelquechose dans le genre ? Comment peut-on faire pour faire plaisir au compilateur dans ce cas ?