Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

P2897 (aligned_accessor) D6 #478

Open
wants to merge 24 commits into
base: master
Choose a base branch
from

Conversation

mhoemmen
Copy link
Contributor

@mhoemmen mhoemmen commented Nov 1, 2024

No description provided.

mhoemmen added 24 commits July 10, 2024 14:18
Update based on further discussion with David Sankel.

* Rename `is_checkably_valid` to `detectably_invalid`
    (with inverted return value)

* Ask LEWG to consider the alternative design that makes
    `is_sufficiently_aligned` a nonmember function in `<bit>`
    instead of a member function of `aligned_accessor`,
    while LWG review of R2 proceeds concurrently

* P2389R2 was voted into the Working Draft at St. Louis,
    so replace use of `dextents` in examples with `dims`.

* Minor formatting and non-wording fixes
Add non-wording section explaining why `aligned_accessor`
has no `explicit` constructor from less to more alignment.
* Make is_sufficiently_aligned a nonmember function
  (in the wording)

* Fix nonwording sections accordingly

* Minor correction in Example in Wording

* Update implementation Compiler Explorer link
  and source code (Appendix B)
* Improve Godbolt implementation

I'm submitting P2897R4.html as P2897R4 (aligned_accessor).
* Move `is_sufficiently_aligned` from `<bit>` to `<memory>`,
  due to feedback from LEWG mailing list review of R4

* Give `is_sufficiently_aligned` a "*Throws*: Nothing" clause
  and add nonwording text explaining why
* Change all template parameter names to be PascalCase,
  per Library convention
* Swap order of template parameters of `is_sufficiently_aligned`.

* Update Compiler Explorer
  <a href="https://godbolt.org/z/xj4Yzdnvf">implementation link</a>.
* Use `assume_aligned` in `offset` as well as in `access`
* Change `gcd` requirement in `aligned_accessor` converting constructor
  back from Mandate to Constraint.  Add explanation with example in
  nonwording Section 5.9.

* Update Compiler Explorer <a
  href="https://godbolt.org/z/x1erq98cK">implementation link</a>.
* Remove `access` Precondition, since it is implied by the Effects
  being equivalent to using `assume_aligned`.
Add alignment precondition to `aligned_accessor` class, and add
nonwording section "Standard accessors already impose preconditions
that propagate to `mdspan` construction" that explains the
"class-wide" preconditions on data handles given to `default_accessor`
and `aligned_accessor`.
* Make conversion operator to `default_accessor` `noexcept`

* Change `offset` precondition to use class' definition
  of "accessible range"

* Add back precondition to `access`, so it matches `offset`'s
  precondition
Implement changes from LWG's 2024-11-01 review.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant