Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This removes the usage of
std::aligned_storage
that is now deprecated in C++23 and replace it with an aligned array ofstd::byte
that is C++17 compliant.I've also replaced the manual destructor calls with
std::destroy_at
(replacing placement new withstd::construct_at
would require C++20 so these are untouched). It is in a separate commit, I can just remove it or make a separate PR if you prefer.Side note: looking at various examples elsewhere I've seen a lot of usage of
std::launder
that seem missing here (mostly after eachreinterpret_cast
). I have no idea how and why it is useful, but you might want to take a look at some point.