#include #include class A { //callback using callback = typename boost::signals2::signal::slot_type ; public : //register the callback boost::signals2::scoped_connection callback_register( callback cbk ) __attribute__( ( warn_unused_result ) ) ; int getx() __attribute__( ( warn_unused_result ) ) ; //callbacks boost::signals2::signal callbacks ; } ; boost::signals2::scoped_connection A::callback_register( callback cbk ) { return std::move( callbacks.connect( cbk ) ) ; } int A::getx() { int y = 200 ; return y ; } void callback() { } int main() { A a1 ; a1.callback_register( boost::bind( &callback ) ) ; a1.getx() ; return 0 ; }