#include <boost/signal.hpp>

struct stFunc
{
    void operator() () const {
        // to do
    }
};

int main( int argc, char* argv[] )
{
    // boost::signal< 리턴형( parameter1, param2, ... paramN ) > 시그널변수이름;

    // 지금은 함수 자체에 인자가 없으므로 전부 void() 형으로 시그널 형성
    // 구조체( 클래스 ) 자체를 연결.
    boost::signal< void() > sig01;
    sig01.connect( stFunc() );
    sig01();

    // 할당된( 정적 or 동적 ) Object( struct or class )에 연결
    boost::signal< void() > sig02;
    boost::signal< void() > sig03;

    stFunc     Func;
    stFunc*    pFunc;

    sig02.connect( Func );
    sig03.connect( *pFunc );

    sig02();
    sig03();

    delete pFunc;
}