Именованные требования C++: BinaryPredicate
BinaryPredicate — это набор требований, которые некоторые средства стандартной библиотеки предъявляют к аргументам, предоставляемым пользователем.
Для BinaryPredicate bin_pred и пары итераторов iter1 и iter2 либо итератора iter и (возможно, const) значения value тип и категория значения выражения bin_pred(*iter1, *iter2) или, соответственно, bin_pred(*iter, value), должны удовлетворять требованиям BooleanTestable.
Кроме того, вычисление этого выражения не должно вызывать неконстантные функции-члены разыменованных итераторов; синтаксически предикат должен принимать аргументы-объекты const, причём поведение должно быть одинаковым независимо от того, являются ли его аргументы const или не-const.
Требования
- Predicate
- CopyConstructible (если не указано иное)
Стандартная библиотека
Следующие средства стандартной библиотеки требуют BinaryPredicate, который не является типом Compare.
| удаляет соседние повторяющиеся элементы (открытая функция-член std::forward_list<T,Allocator>) |
|
| удаляет соседние повторяющиеся элементы (открытая функция-член std::list<T,Allocator>) |
|
| находит последнюю последовательность элементов в заданном диапазоне (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| ищет любой элемент из заданного набора (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату) (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| находит первую позицию, в которой два диапазона различаются (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| определяет, совпадают ли два набора элементов (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
|
(C++11) | определяет, является ли одна последовательность перестановкой другой (шаблон функции и функциональный объект алгоритма) |
|
(C++20) | |
| ищет первое вхождение диапазона элементов (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| ищет первое вхождение в диапазоне заданного количества подряд идущих копий элемента (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| удаляет соседние повторяющиеся элементы в диапазоне (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
| создаёт копию диапазона элементов без соседних повторений (шаблон функции и функциональный объект алгоритма) |
|
|
(C++20) | |
|
(устарело в C++17)(удалено в C++20) | создаёт пользовательский объект std::binary_negate (шаблон функции) |
|
(C++11) | контейнер уникальных ключей с хешированием по ключам (шаблон класса) |
|
(C++11) | контейнер пар «ключ-значение» с хешированием по ключам; ключи уникальны (шаблон класса) |
|
(C++11) | контейнер ключей с хешированием по ключам (шаблон класса) |
|
(C++11) | контейнер пар «ключ-значение» с хешированием по ключам (шаблон класса) |
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применён к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
|
LWG 2114 (P2167R3) | C++98 | преобразуемость возвращаемых типов в bool была недостаточно строгой для отражения ожиданий реализаций | требования усилены |
| LWG 3031 | C++98 | требования к значениям const были недостаточными | требования усилены |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/BinaryPredicate