The functions StepType::is_executable() and StepType::selection_probability_factor() are in most cases unnecessary and can take the values true and 1.0.
Using boost::type_traits [1] one can check at compile-time in the respective algorithms using this functions (mainly Simulation::do_steps), whether these two functions are implemented by the user. If they are not, the standard values true or 1.0 can be used.
This reduces the amount of code a beginner has to write for his StepType and the amount of confusion a user has when using the library the first time.
The functions StepType::is_executable() and StepType::selection_probability_factor() are in most cases unnecessary and can take the values true and 1.0.
Using boost::type_traits [1] one can check at compile-time in the respective algorithms using this functions (mainly Simulation::do_steps), whether these two functions are implemented by the user. If they are not, the standard values true or 1.0 can be used.
This reduces the amount of code a beginner has to write for his StepType and the amount of confusion a user has when using the library the first time.
[1] http://www.boost.org/doc/libs/1_53_0/libs/type_traits/doc/html/index.html