Boost logo

Boost :

Subject: [boost] [Function] Interest in boost::functions that take and return references to self-type?
From: Tony Astolfi (tastolfi_at_[hidden])
Date: 2009-11-16 10:17:47


Would there be interest in adding a feature to boost::function that allows a
function to accept as input and return values of the same type as itself?

I think this would be useful for implementing state machines.

Something like:

typedef boost::function< boost::function_self_type (event const&) >
state_transition_fcn;

state_transition_fcn initial_state (event const& e);
state_transition_fcn second_state (event const& e);

state_transition_fcn initial_state (event const& e)
{
    if (/* some predicate on e*/) {
        // go to new state
        return &second_state;
    } else {
        // stay in old state
        return &initial_state;
    }
}

state_transition_fcn current_state = &initial_state;
while (more_events) {
    current_state = current_state( next_event );
}

-Tony Astolfi

ps. Please point me in the right direction if such a thing already exists!
Thanks!


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk