/* Helper to avoid errors about ambiguous function calls since there are no
overloads of abs for unsigned types */
template<typename T, bool f = is_signed<T>::value>
/* Helper to avoid errors about ambiguous function calls since there are no
overloads of abs for unsigned types */
template<typename T, bool f = is_signed<T>::value>