Стандарт C++ не определяет понятия. Он определяет «требования», такие как:
EqualityComparable, LessThanComparable, DefaultConstructible,
MoveConstructible, CopyConstructible, MoveAssignable, CopyAssignable,
Destructible, NullablePointer, Hash, TrivialClock, Allocator,
Swappable or Container
Но в некоторых требованиях используется другой синтаксис, чем другие. Например, allocator
и swappable
использовать в нижнем регистре (курсив распределителем), а другие из моего списка образца шрифт моноширинный CamelCase, или, как описано в стандарте, с постоянным типа (EqualityComparable
).
Другие «понятия», как PODType
, рассматриваются в стандарте как просто определения.
Например, BinaryPredicate
не определен как понятие или определение; так же, как имя шаблона из функций, используя его:
void unique();
template <class BinaryPredicate> void unique(BinaryPredicate pred);
эффекты: стирает все, но первый элемент из каждой последовательной группы равных элементов упомянутой посредством итератора i
в диапазоне [first + 1,last)
, для которого *i == *(i-1)
(для версии без аргументов ) или pred(*i, *(i - 1))
(для версии с аргументом предиката). Invalidates только итераторы и ссылки на стираемые элементы.
Throws: Ничего, если исключение не будет выбрано путем сравнения равенства или предиката.
Сложность: Если диапазон [first,last)
не пусто, точно (last - first) - 1
приложения соответствующий предикат, в противном случае применения предиката.
Как вы видите, BinaryPredicate
не определен. Он просто показывает, как это влияет на поведение std::unique
.
С другой стороны, список концепций cppreference извлекается из концепции , что является нестандартным. Кроме того, cppreference
не совершенен, и не каждая страница wiki полностью или полностью описана с точки зрения концептуального предложения, и есть другие параметры шаблона, которые даже не отображаются в стандарте, например UnaryOperator
.
cppreference документировал некоторые из них, а не другие. Я думаю, вы переусердствовали. –
'UnaryPredicate' кажется синонимом' Predicate', по крайней мере. – StoryTeller
'BinaryPredicate' - это имя типа/типа, которое используется и определено в реальном стандарте C++ (см. Параграф 9.1 параграфа [этот проект] (http://www.open-std.org/jtc1/sc22/wg21/ документы/документы/2013/n3690.pdf)). Тем не менее, термины 'UnaryPredicate' и' UnaryFunction' никогда не встречаются в стандарте. 'BinaryOperation' и' UnaryOperation' используются в стандарте, но не определены так явно, как 'BinaryPredicate'. – Cornstalks