I think the whole library can be boiled down to this class and a TimeFunction typedef. Clock can be used as an interface, base class or mixin, and it's default constructor can be const making it usable as a parameter default value.