k [/|%] size_[i|j] is used, where k is difference_type (signed),
size_x is size_type (unsigned). This results in promoting k to
unsigned, and can yield very strange results when k is negative. For
example, m being a size 2x2 ublas::matrix, m.begin1() - m.end1()
yields 2147483646 instad of -2. Putting a
static_cast<difference_type>(size_x) in functional.hpp seems
to solve the problem.
Is this known / intended? If so, what is the rationale? If it is a
bug, is this a valid workaround?