
<snip>
target returns a pointer to the function object. If TargetType is void(*)() target will return an object of type void(**)().
So, I modfied my function to: unsigned long long slotAddr = (unsigned long long)slot.target< void(*)() >(); LOG4CXX_DEBUG(logger_, "*** slotAddr = " + (boost::format("%016X") % slotAddr).str()); But my prints of the value show: connectCreateTypeSignal in *** slotAddr = 0000000000000000 Looking at the debugger, it's setting the results to zero in function_base.hpp, line 537, when it makes the call to vtable->manager. This is dying down in function_base.hpp(284) where this code is run: const BOOST_FUNCTION_STD_NS::type_info& check_type = *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr); if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor))) out_buffer.obj_ptr = &in_buffer.func_ptr; else out_buffer.obj_ptr = 0; And it is taking the "else" path out of the code. Looking at the debugger, all I really want is the value of slot.functor.obj_ptr (which I can see in the debugger, but I'm assuming that I shouldn't be accessing directly [nor have I checked the public/protected/private-ness of it either] ) Thanks --dw