bool operator>(const version_info& l, const version_info& r) { return version_numbers_comparison_internal(l, r, GT) || ( version_numbers_comparison_internal(l, r, EQUAL) && ( (r.special_version().empty() && !l.special_version().empty()) || (l.special_version() > r.special_version()) ) ); }
bool operator!=(const version_info& l, const version_info& r) { return version_numbers_comparison_internal(l, r, NOT_EQUAL) || l.special_version() != r.special_version(); }
bool operator==(const version_info& l, const version_info& r) { return version_numbers_comparison_internal(l, r, EQUAL) && l.special_version() == r.special_version(); }