A function connecttakes an object boost::function, which is basically a common wrapper for everything that has a operator()specific to it. Therefore, it is just as safe as what you bind.
For example, it is safe enough:
boost::shared_ptr<ClassName> pValue = boost::make_shared<ClassName>(...);
signal.connect(boost::bind(&ClassName::FuncName, pValue, ...);
, boost::shared_ptr .
ClassName *pValue = new ClassName(...);
signal.connect(boost::bind(&ClassName::FuncName, pValue, ...);
. , , delete pValue.
" ", . , , boost::bind, , .