template concept IsEqualityComparable = requires(T a, U b) { { a == b } -> std::same_as; { b == a } -> std::same_as; };
static_assert(IsEqualityComparable); // true as expected! static_assert(IsEqualityComparable); // true as expected! static_assert(IsEqualityComparable); // true as expected! static_assert(IsEqualityComparable); // true as expected!
static_assert(std::equality_comparable_with); // true as expected! static_assert(std::equality_comparable_with); // true as expected! static_assert(std::equality_comparable_with); // !!!false!!! why??? static_assert(std::equality_comparable_with); // !!!false!!! why??? [/code] Почему std :: enquality_comparable_with не работает в самых простых случаях? Мне просто интересно:
Зачем ему нужен общий тип для сравнения двух не связанных с ними типов, даже если соответствующий оператор == был хорошо определен?