abs for user-defined type should not be std::abs