Boost logo

Boost Users :

From: Robert Dailey (rcdailey_at_[hidden])
Date: 2008-04-25 18:14:22


On Fri, Apr 25, 2008 at 4:09 PM, Steven Watanabe <watanabesj_at_[hidden]>
wrote:

> AMDG
>
> Robert Dailey wrote:
> > Say I have a function as follows:
> >
> > *template< typename t_packet >
> > void Subscribe( boost::function<void (t_packet const&)> func )
> > {
> > // gSignal is a boost::signal somewhere. Assume valid.
> > gSignal.connect( func );
> > }*
> >
> > And in some other function, I invoke Subscribe() as follows:
> > *
> > void MyCallback( WalkPacket const& p )
> > {
> > }
> >
> > void MainTest()
> > {
> > Subscribe( &MyCallback );
> > }*
> >
> > The code above will actually not compile, since the template parameter
> > t_packet cannot be deduced. Is there a way I can make the template
> > deduction work?
>
> You can construct a boost::function at the call site explicitly rather
> than relying on the implicit conversion.
>
> Alternately you can provide an overload of Subscribe for function pointers.

That kind of defeats the purpose. I'm trying to make Subscribe figure out
the type of the packet itself to avoid having to explicitly say "I'm
subscribing for a WalkPacket" when the signature of the slot already has
this information. The current implementation requires this syntax:

Subscribe<WalkPacket>( &walkPacketCallback );



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net