Reduce the cost of StepOverRange calls to isEmpty.
Add metafunctions not_ , enable_if, enable_if_pred, disable_if and disable_if_pred . Added unit tests too. Next step is to replace use of std::enable_if with the algo::logic:: definitions.
Move across to using the enable_if_pred/disable_if_pred metafunctions.
Tweak the ValueReturnType mechanism to not bother with const-ness when returning by value.
Add template partial specialisation to GetValue in order to handle const-ness within the template specialisations rather than in the helper getValue/getValueByReference functions.
Improve performance of Forwards and Backwards by bypassing the type deduction functions.
Improve the performance of the range operations when operating in unoptimised builds; pass by reference and bypass the type deduction functions for GetValue.
Remove use of implicit nested ::value class members, in favour of the ::type::value convention (more preparation to try to be C++03 compatible).
Improve performance of debug builds :-
1) Update the default operations to have a no-except specification and mark them as __attribute__((const)) using macro ALGO_NO_OP_FUNCTION
2) Pass underlying iterators by value in the range IsEmpty function.
Add function stepOverDeduced;  improve performance tests for this.
Correct missing break statements in writeRandom .
Improve propertiesPerformanceTest so that it reflects the best possible performance achievable with the properties scheme, calling ::apply directly rather than using the type deduction function.