Date: Mon, 19 Dec 2022 08:54:19 -0600

On Mon, Dec 19, 2022 at 8:32 AM Vladimir Grigoriev via Std-Discussion <

std-discussion_at_[hidden]> wrote:

> There is another unclear phrase in the C++ 20 Standard relative to

> comparison operators.

>

> «3 The return value V of a defaulted == operator function with parameters

> x and y is determined by comparing corresponding elements xi and yi in the

> expanded lists of subobjects for x and y (in increasing index order) until

> the first index i where xi == yi yields a result value which, when

> contextually converted to bool, yields false. If no such index exists, V is

> true. Otherwise, V is false.»

>

It would be helpful if you would point out *where* these phrases exist in

the C++20 Standard, as it would make it easier for people to answer your

questions. In this case, this is [class.eq]/3 (

https://eel.is/c++draft/class.eq#3)

>

> What does the last statement « Otherwise, V is false.»» mean?

>

> Does it mean a case when two expanded lists are unequal or something else?

>

No, the expanded lists have to be equal - we have the same type on both

sides. There are two separate things going on in this paragraph:

1. What work is done? We compare xi == yi until the first i for which xi

== yi, contextually convertible to bool, yields false.

2. What value is returned? If no such i exists, V (the return value) is

true. Otherwise, V is false.

Introducing V doesn't seem like it adds anything, if the wording said "If

no such index exists, the return value is true. Otherwise, the return value

is false." it'd be more direct.

> In any case a code example of such «otherwise» along with the example of a

> trivial comparison that follows would be useful to make the statement more

> clear.

>

> With best regards

> (Vlad from Moscow)

> You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or

> http://ru.stackoverflow.com

>

>

>

> Понедельник, 19 декабря 2022, 14:33 +03:00 от Edward Catmur via

> Std-Discussion <std-discussion_at_[hidden]>:

>

>

> On Mon, 19 Dec 2022, 11:31 Vladimir Grigoriev via Std-Discussion, <

> std-discussion_at_[hidden]

> <//e.mail.ru/compose/?mailto=mailto%3astd%2ddiscussion_at_[hidden]>>

> wrote:

>

> Can anybody translate this phrase from the C++ 20 Standard

>

> «Name lookups in the defaulted definition of a comparison operator

> function are performed from a context equivalent to its function-body.»

>

> to the human language?

>

> How can a context be equivalent to a function body? They are two

> different notions.

>

>

> A context equivalent to the context of the function body.

>

>

>

>

> With best regards

> (Vlad from Moscow)

> You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or

> http://ru.stackoverflow.com

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> <//e.mail.ru/compose/?mailto=mailto%3aStd%2dDiscussion_at_[hidden]>

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> <http:///compose?To=Std%2dDiscussion_at_[hidden]>

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

>

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

std-discussion_at_[hidden]> wrote:

> There is another unclear phrase in the C++ 20 Standard relative to

> comparison operators.

>

> «3 The return value V of a defaulted == operator function with parameters

> x and y is determined by comparing corresponding elements xi and yi in the

> expanded lists of subobjects for x and y (in increasing index order) until

> the first index i where xi == yi yields a result value which, when

> contextually converted to bool, yields false. If no such index exists, V is

> true. Otherwise, V is false.»

>

It would be helpful if you would point out *where* these phrases exist in

the C++20 Standard, as it would make it easier for people to answer your

questions. In this case, this is [class.eq]/3 (

https://eel.is/c++draft/class.eq#3)

>

> What does the last statement « Otherwise, V is false.»» mean?

>

> Does it mean a case when two expanded lists are unequal or something else?

>

No, the expanded lists have to be equal - we have the same type on both

sides. There are two separate things going on in this paragraph:

1. What work is done? We compare xi == yi until the first i for which xi

== yi, contextually convertible to bool, yields false.

2. What value is returned? If no such i exists, V (the return value) is

true. Otherwise, V is false.

Introducing V doesn't seem like it adds anything, if the wording said "If

no such index exists, the return value is true. Otherwise, the return value

is false." it'd be more direct.

> In any case a code example of such «otherwise» along with the example of a

> trivial comparison that follows would be useful to make the statement more

> clear.

>

> With best regards

> (Vlad from Moscow)

> You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or

> http://ru.stackoverflow.com

>

>

>

> Понедельник, 19 декабря 2022, 14:33 +03:00 от Edward Catmur via

> Std-Discussion <std-discussion_at_[hidden]>:

>

>

> On Mon, 19 Dec 2022, 11:31 Vladimir Grigoriev via Std-Discussion, <

> std-discussion_at_[hidden]

> <//e.mail.ru/compose/?mailto=mailto%3astd%2ddiscussion_at_[hidden]>>

> wrote:

>

> Can anybody translate this phrase from the C++ 20 Standard

>

> «Name lookups in the defaulted definition of a comparison operator

> function are performed from a context equivalent to its function-body.»

>

> to the human language?

>

> How can a context be equivalent to a function body? They are two

> different notions.

>

>

> A context equivalent to the context of the function body.

>

>

>

>

> With best regards

> (Vlad from Moscow)

> You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or

> http://ru.stackoverflow.com

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> <//e.mail.ru/compose/?mailto=mailto%3aStd%2dDiscussion_at_[hidden]>

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> <http:///compose?To=Std%2dDiscussion_at_[hidden]>

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

>

> --

> Std-Discussion mailing list

> Std-Discussion_at_[hidden]

> https://lists.isocpp.org/mailman/listinfo.cgi/std-discussion

>

Received on 2022-12-19 14:54:32