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);
} |
Partager