|
Boost : |
From: Fabio Fracassi (f.fracassi_at_[hidden])
Date: 2008-08-25 08:00:51
Hi,
I'm sorry, this is a repost of a message I send to boost user, with a
somewhat more restrictive subject. I didn't get any input there, and I
hope that someone can help me here.
I'm currently trying to wrap (or forward) a call to
boost::signal<A_func_Signature>::connect(), to - amongst other things -
insulate users from using boost::bind.
So what I have is something like this:
template< typename Signature, class Reciever >
void connect( const signal_id& id,
const Signature& sig,
const Reciever* rcv
)
{
typedef ???? AdaptedSignature;
get_signal< AdaptedSignature > ( id ) -> connect(boost::bind(sig,
rcv, _1));
}
now this code is supposed to be called like this:
connect( some_signal_id, &SomeClass::some_member, someClass_instance );
where SomeClass::some_member has the same function signature as the
signal which is associated with some_signal_id.
e.g.
boost::signal<void (bool)> signal;
struct SomeClass {
void some_member(bool b);
};
So my question is how can I construct the "AdaptedSignature" type from
the template deduced "Signature"?
From what I gather from the documentation, boost function_types might
hold the answer to my question, but I cannot figure out how.
So is what I am trying to do possible, and is function_types the right tool?
TIA
Fabio
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk