Implement LWG-3436 std::construct_at should support arrays
#5920
+180
−4
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.
Fixes #5110.
Currently, all tested compilers (MSVC, Clang, and EDG) need some workaround for constant evaluation.
[[msvc::constexpr]]of the involvedoperator new[]in VCRuntime.operator new[]overload, which is sufficiently constrained to avoid affecting overload resolution, as a workaround. However, it doesn't work for non-trivially destructible element types, because MSVC will require additional space to record the number of class objects to destroy.std::allocator<T[N]>::allocatein constant evaluation.Reported issues: