llvm-project/clang-tools-extra/clang-tidy/portability
Fangrui Song b9ca972b1f [clang-tidy] Add portability-std-allocator-const check
Report use of `std::vector<const T>` (and similar containers of const
elements). These are now 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.

Note: on MSVC where -fdelayed-template-parsing is the default, the check cannot
catch cases in uninstantiated templates.

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D123655
2022-04-14 11:13:41 -07:00
..
CMakeLists.txt [clang-tidy] Add portability-std-allocator-const check 2022-04-14 11:13:41 -07:00
PortabilityTidyModule.cpp [clang-tidy] Add portability-std-allocator-const check 2022-04-14 11:13:41 -07:00
RestrictSystemIncludesCheck.cpp [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
RestrictSystemIncludesCheck.h [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
SIMDIntrinsicsCheck.cpp [clang-tidy][NFC] Tweak some generation of diag messages 2021-02-26 19:10:25 +00:00
SIMDIntrinsicsCheck.h
StdAllocatorConstCheck.cpp [clang-tidy] Add portability-std-allocator-const check 2022-04-14 11:13:41 -07:00
StdAllocatorConstCheck.h [clang-tidy] Add portability-std-allocator-const check 2022-04-14 11:13:41 -07:00