Taking negative of a size_t is bad -- size_t is normally unsigned.
With asserts turned off, value.hpp caused an unused variable warning.