llvm-use-ranges¶
Finds calls to STL library iterator algorithms that could be replaced with
LLVM range-based algorithms from llvm/ADT/STLExtras.h
.
Example¶
auto it = std::find(vec.begin(), vec.end(), value);
bool all = std::all_of(vec.begin(), vec.end(),
[](int x) { return x > 0; });
Transforms to:
auto it = llvm::find(vec, value);
bool all = llvm::all_of(vec, [](int x) { return x > 0; });
Supported algorithms¶
Calls to the following STL algorithms are checked:
std::all_of
,
std::any_of
,
std::binary_search
,
std::copy
,
std::copy_if
,
std::count
,
std::count_if
,
std::equal
,
std::fill
,
std::find
,
std::find_if
,
std::find_if_not
,
std::for_each
,
std::includes
,
std::is_sorted
,
std::lower_bound
,
std::max_element
,
std::min_element
,
std::mismatch
,
std::none_of
,
std::partition
,
std::partition_point
,
std::remove_if
,
std::replace
,
std::stable_sort
,
std::transform
,
std::uninitialized_copy
,
std::unique
,
std::upper_bound
.
The check will add the necessary #include "llvm/ADT/STLExtras.h"
directive
when applying fixes.