170 похожих чатов

17 ответов

16 просмотров

это компоратор вместо набора <, >, >=, <=, ==

Space shuttle

d7d1cd
А как его реализовывать?

можно дефолтную реализацию, если типы базовые или из библиотеки: namespace { struct Person { std::string name; int age; std::strong_ordering operator<=>(Person const& other) const = default; }; TEST(SimpleTest, ThreeWayComparation) { Person p1 = { "test1", 10 }; Person p2 = { "test1", 10 }; Person p3 = { "test2", 10 }; EXPECT_TRUE(p1 == p2); EXPECT_TRUE(p1 != p3); EXPECT_TRUE(p1 < p3); EXPECT_TRUE(p1 <= p3); EXPECT_FALSE(p1 > p3); EXPECT_FALSE(p1 >= p3); } } // namespace

d7d1cd
А как его реализовывать?

Только при дефолтной реализации будет memberwise comparison, а если переопределять, к тому же, не будет оператора ==

Anatoly Shirokov
это компоратор вместо набора <, >, >=, <=, ==

вообще, вроде как приняли <=> != ==, поэтому он заменяет только <, >, <=, >=

Alexander Karaev
вообще, вроде как приняли <=> != ==, поэтому он за...

Если не дефолтный. Там мотивация, мол, если переопределён, то == может быть неэффективным

Liber Azerate
Если не дефолтный. Там мотивация, мол, если переоп...

то есть если сделать <=> = default, то == тоже сгенерируется? видимо, я не так запомнил, потому что думал, что <=> и == теперь никак друг на друга не влияют

Liber Azerate
Да, сгенерируется

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1185r2.html#change-defaulted-to-also-generate-a-defaulted а тут говорится обратное

Alexander Karaev
http://www.open-std.org/jtc1/sc22/wg21/docs/papers...

Ну так, здесь как раз написано As an optional extension, this paper proposes that a defaulted <=> operator also generate a defaulted ==. We can do this regardless of whether the return type of the defaulted <=> is provided or not, since even weak_equality implies ==.

Liber Azerate
Ну так, здесь как раз написано As an optional ext...

ну да, с пропозалом не совсем ясно - что-то из него приняли, что-то нет. без поллитра..

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта