almost_equal only operates on two reals, or two integers (and even then only on the same signedness).
HARD vs SOFT assertions were never very well defined or supported. Currently they just imply a level of functionality that isn't present; it's better to remove them instead of expending the effort at this point.