Здравствуйте, Pzz, Вы писали:
Pzz>Очень редко бывает так, чтобы требования быстроты и сложности применялись к коду одновременно. И там, где есть требование быстроты, можно поднапрячься и обойтись без перегрузки операторов — скорее всего, речь идёт о небольшой доле кода.
Ну вот возьмём простой класс — std::string, хочу я его во всяких контейнерах держать, сравнивать и вообще не церимониться.
и есть у меня код:
if (s1 > s2) { ... }
вот ты бы хотел, чтобы условие разворачивалось в
(!(s1 < s2 ) || (s1 == s2)) с удвоением сложности?
или чтобы нужно было писать
gteaterthan(s1,s2) ?
С моей точки зрения, код не выглядит слишком уж экзотичным. Во вполне прикладном и высокоуровневом коде сравниваются строки, контейнеры, кортежи, варианты, опшналы и много чего другого, я бы не хотел, чтобы мне вместо читабельных математических символов пришлось использовать что-то другое.
Но и плата за
!((v1 < v2) || (v1 == v2)) — это не несколько тактов.