Tôi đã thấy rằng, nếu bạn có operator<
, bạn có thể thực hiện, giả sử, operator>=
là !(a < b)
. Tuy nhiên, khi tôi đến Ủy ban C++ ở Bristol, họ nói rằng bạn có thể thực hiện tất cả các toán tử so sánh theo cách này. Đặc biệt, khi xem xét các loại có toán tử so sánh không tầm thường (xem xét một chuỗi dài tùy ý, đặc biệt nếu đây là Unicode), điều này có thể được thực hiện chỉ với một cuộc gọi đến operator<
. Tôi không thể hình dung được điều này có thể được thực hiện như thế nào.Triển khai các toán tử so sánh khác về toán tử <trong một cuộc gọi
Làm cách nào để triển khai operator>
và operator<=
chỉ với một cuộc gọi tới operator<
và không có cuộc gọi nào đến các toán tử so sánh khác?
Tôi không chắc chắn abt chỉ '<' nhưng ['std :: rel_ops'] (http://en.cppreference.com/w/cpp/utility/rel_ops/operator_cmp) có thể làm chúng với' == ' và '<' –
Giống như ví dụ của riêng bạn: 'a> b' bằng với'! (a == b || a usr2564301
Điều đó cũng liên quan đến một cuộc gọi đến toán tử ==, điều này rõ ràng sẽ kém hiệu suất hơn so với toán tử tùy chỉnh>. – Puppy