[libc++][test] Avoid using allocator<const T>
#73545
Merged
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.
Found while running libc++'s test suite with MSVC's STL.
MSVC's STL rejects
allocator<const T>
. This may or may not be justified by the current Standardese (it was bogus in the C++03 era), but it's how we reject usage likevector<const T>
.A bunch of
mdspan
tests are failing for us because some centralized machinery is usingallocator<const T>
. Testing thatmdspan
and its associated types work properly withconst T
is good and necessary, but directly allocatingconst T
is what's a problem for MSVC's STL. I'd like to ask for a very targeted change here that preserves all of the test coverage but changes howElementPool
interacts withallocator
.This intentionally leaves
ElementPool::get_ptr()
returningT*
(pointer-to-possibly-const), so there's no externally visible difference.