C++ named requirements: 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
значениям были недостаточными
|
требования усилены |