Report use of `std::vector<const T>` (and similar containers of const
elements). These are not allowed in standard C++ due to undefined
`std::allocator<const T>`. They do not compile with libstdc++ or MSVC.
Future libc++ will remove the extension (D120996).
See docs/clang-tidy/checks/portability-std-allocator-const.rst for detail.
I have attempted clean-up in a large code base. Here are some statistics:
- 98% are related to the container std::vector, among deque/forward_list/list/multiset/queue/set/stack/vector.
- 24% are related to std::vector<const std::string>.
- Both std::vector<const absl::string_view> and std::vector<const int> contribute 2%. The other contributors spread over various class types.
The check can be useful to other large code bases and may serve as an example
for future libc++ strictness improvement.
without the punctuation, the "t" AllocatorConstT/allocator-const-t doesn't seem so obvious IMO, I'd consider dropping it from the check name.
Also the docs and even the implementation are focused on containers, "portability-const-container" might be easier to remember/understand for people not immersed in the details here.
All up to you though.