[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
mdspantests are failing for us because some centralized machinery is usingallocator<const T>. Testing thatmdspanand its associated types work properly withconst Tis good and necessary, but directly allocatingconst Tis 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 howElementPoolinteracts withallocator.This intentionally leaves
ElementPool::get_ptr()returningT*(pointer-to-possibly-const), so there's no externally visible difference.