
This isn't a general solution, but works to deduce the function return and argument types :
Ok, I see your point. It is an interesting ansatz and worth to consider. I think Boost.function_types is the boost library for that. In your suggestion one has a stepper for one particular function (signature). This might be suitable for the user, but the original ansatz is more direct, because your are passing the types (state and deriv type) which stores intermediate values. It has also the advantage that you can use templatized functors like struct lorenz { template< class State , class Value > void operator()( const State &x , State &dxdt , Value dxdt ) { ... } }; which allows you to use one system function with different state types (for example with std::vector, boost::range, ublas::vector). This is a feature, which I don't want to miss. Especially the possibility to use boost.range it very nice. Nevertheless, one could build something like your suggestion on top of the existing one, maybe with some metafunctions ... Best regards, Karsten