ideas
ideas copied to clipboard
Неконсистентность вординга касательно equality of value representation
«Pointers to layout-compatible types shall have the same value representation and alignment requirements» (3.4) [basic.compound]
«Evaluates load(order) and compares its value representation for equality against that of old.» (23.1) [atomics.ref.ops]
Вординг неконсистентен. В одном месте под equality of value representation имеется ввиду то, что кол-во битов в них одинаковое, а в другом то, что эти биты одинаковые.
Причем в другом месте выражаются вот так:
«Each bit of the value representation of the result is equal to the corresponding bit in the object representation of from» (26.5.3) [bit.cast]
То есть, и (23.1) [atomics.ref.ops] было бы логично переписать как-то так для устранения неоднозначности:
«compares bits of its value representation for equality against these of old»
Можно было бы посчитать, что то, что в одном случае речь идёт о количестве, а в другом о значениях битов, понятно из контекста.
Но это не отменяет того, что в одном случае для того, чтобы обозначить сравнение значений битов value representation используется вординг each bit of the value representation, а в других случаях просто compares its value representation, что вносит лишнюю путаницу.
-
Употребления вординга
has the same value of corresponding bits in its value representation
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: basic.fundmanetal#3, bit.cast#2 -
Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство количества битов, участвующих в value representation: basic.fundmanetal#3, basic.fundmanetal#6, basic.fundmanetal#10, basic.fundamental#note-11 -
Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: atomics.ref.ops#19, atomics.ref.ops#23.1, atomics.types.operations#23, atomics.types.operations#30.1
Употребления вординга
has the same value of corresponding bits in its value representation
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: basic.fundmanetal#3, bit.cast#2Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство количества битов, участвующих в value representation: basic.fundmanetal#3, basic.fundmanetal#6, basic.fundmanetal#10, basic.fundamental#note-11Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: atomics.ref.ops#19, atomics.ref.ops#23.1, atomics.types.operations#23, atomics.types.operations#30.1
Это вносит путаницу, так как в одних случаях под equality of value representation
понимается равенство количества бит, участвующих в нем, а в другом равенство значений бит, участвующих в нем.
Причем это еще более запутывает, ибо даже в atomics, где только и встречается такой вординг, используется и следующий:
For a union with bits that participate in the value representation of some members but not others, compare-and-exchange might always fail atomics.types.operations#note-8
То есть, даже в [atomics] о битах то говорится, будто они лишь participate в value representation, то будто их значения и есть само value representation
- Употребления вординга
has the same value of corresponding bits in its value representation
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: basic.fundmanetal#3, bit.cast#2- Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство количества битов, участвующих в value representation: basic.fundmanetal#3, basic.fundmanetal#6, basic.fundmanetal#10, basic.fundamental#note-11- Употребления вординга
compares its value representation for equality
(или аналогичного) для обозначения сравнения на равенство битов, составляющихvalue representation
: atomics.ref.ops#19, atomics.ref.ops#23.1, atomics.types.operations#23, atomics.types.operations#30.1
По-моему, правильно будет переписать все случаи, попадающие в пункт 3, по подобию пункта 1. Это устранит всякую неконсистентность вординга по этому поводу.
Но прошу экспертного мнения, прав ли я.