Относительно двоичного предиката Сравнить - PullRequest
2 голосов
/ 02 октября 2019

Я ссылаюсь на двоичный предикат Compare comp, ожидаемый при перегрузке std :: lower_bound и т. Д.:

Описание гласит:

Сигнатура функции предиката должна быть эквивалентна следующей:

bool pred (const Type1 & a, const Type2 & b);

В то время как подпись не должна иметь const &, функцияне должен изменять объекты, переданные ему, и должен иметь возможность принимать все значения типа (возможно, const) Type1 и Type2 независимо от категории значения (таким образом, Type1 & не допускается, равно как и Type1, если для Type1 перемещение не эквивалентноcopy (начиная с C ++ 11)).

Меня немного смущает следующая часть описания (что кажется противоречивым?):

. ..функция не должна изменять переданные ей объекты и должна иметь возможность принимать все значения типа (возможно, const) Type1 и Type2 независимо от категории значения (таким образом, Type1 & не допускается, равно как и Type1, если только для Type1перемещение эквивалентно копии (начиная с C ++ 11))

Если функция должна принимать все категории значений, почему Type1 не допускается? Кроме того, почему move должно быть эквивалентно copy для Type1, поскольку C ++ 11?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...