Список стандартных концепций?
Из того, что я помню, в C++ есть такие понятия, как Mergable, Container, Comparable, Sortable, Arithmetic и т. Д. Я видел их здесь и там, но никогда не видел списка. Где я могу найти список стандартных концепций C++?
-edit- люди в замешательстве, но я имею в виду примерную строку шаблона на этом слайде, которая содержит Container и Sortable. Что еще там?
3 ответа
Где я могу найти список стандартных концепций C++?
По-видимому, их нет, они еще не достигли стандарта; см. также является ли проект комитета стандарта C++14 общедоступным? Тем не менее, соответствующие документы выглядят как Concepts Lite: ограничение шаблонов с предикатами (N3580) и концептуальный дизайн для STL (N3351). Список от 15 июня 2014 года, взятый из N3580:
Тип Черты
- Equality_comparable
- Totally_ordered
- движимое
- Copyable
- Полурегулярные
- регулярное
- функция
- Regular_function
- сказуемое
- Связь
Итератор Концепции
- Iterator_category
- Тип ценности
- difference_type
- Удобочитаемый
- Writable
- перестановочны
- изменчивый
- выдвигаться
- Incrementable
- Input_iterator
- Output_iterator
- Forward_iterator
- Bidirectional_iterator
- Random_access_itertor
Ограничения алгоритма
- Indirectly_movable
- Indirectly_copyable
- Indirectly_swappable
- Indirectly_equal
- Indirectly_ordered
- Indirectly_comparable
- Сортируемый
- Объединяемая
Из того, что я помню, в C++ есть такие понятия, как Mergable, Container, Comparable, Sortable, Arithmetic и т. Д. Я видел их здесь и там, но никогда не видел списка. Где я могу найти список стандартных концепций C++?
Какие понятия
Понятия - это термин, который относится к формализации требований типа, которые должны соблюдаться компилятором. Этот проект (N3580) содержит все детали.
Каковы требования к типу
Требования к типу - это набор требований, определенных даже в стандарте C++03, которые должны соблюдаться программистом для применения некоторых операций к указанному типу. Стандарт никогда не называет их понятиями.
Список требований к типу
Я думаю, что вы имеете в виду требования к типу, учитывая, что:
- ты упомянул
Container
- ты упомянул
Comparable
- тот факт, что вы помните, C++ имеет "концепции"
Итак, вот список требований к типу, в котором вы также можете найти Container
а также Compare
(как организовано cppreference):
основной
- DefaultConstructible
- MoveConstructible
- CopyConstructible
- MoveAssignable
- CopyAssignable
- Destructible
раскладка
- TriviallyCopyable
- TrivialType
- StandardLayoutType
- PODType
Библиотека по всей
- EqualityComparable
- LessThanComparable
- Swappable
- ValueSwappable
- NullablePointer
- гашиш
- Распределитель
- функциональный объект
- подлежащий выкупу
- сказуемое
- BinaryPredicate
- сравнить
Контейнер
- Контейнер
- ReversibleContainer
- AllocatorAwareContainer
- SequenceContainer
- AssociativeContainer
- UnorderedAssociativeContainer
Контейнерный элемент
- CopyInsertable
- MoveInsertable
- EmplaceConstructible
Итератор
- Итератор
- InputIterator
- OutputIterator
- ForwardIterator
- BidirectionalIterator
- RandomAccessIterator
Функции потокового ввода-вывода
- UnformattedInputFunction
- FormattedInputFunction
- UnformattedOutputFunction
- FormattedOutputFunction
Генератор случайных чисел
- SeedSequence
- UniformRandomNumberGenerator
- RandomNumberEngine
- RandomNumberEngineAdaptor
- RandomNumberDistribution
совпадение
- BasicLockable
- Lockable
- TimedLockable
- Mutex
- TimedMutex
- SharedTimedMutex
Другой
- UnaryTypeTrait
- BinaryTypeTrait
- TransformationTrait
- Часы
- TrivialClock
- CharTraits
- pos_type
- off_type
- BitmaskType
- LiteralType
Вкратце, "концепция" - это набор требований, состоящий из допустимых выражений, связанных типов, инвариантов и гарантий сложности. Говорят, что тип, удовлетворяющий требованиям, моделирует концепцию. Концепция может расширять требования другой концепции, которая называется уточнение. "
Источник: http://www.boost.org/community/generic_programming.html
Доступны несколько списков понятий:
- http://en.cppreference.com/w/cpp/concept
// насколько мне известно, это наиболее полный - https://www.sgi.com/tech/stl/table_of_contents.html
// примечание: это предварительный стандарт, но описания носят информативный характер и также применяются к концепциям, существующим сегодня - http://www.generic-programming.org/languages/conceptcpp/concept_web.php
Для получения дополнительной информации см. "Концепции и моделирование", а также "Уточнение" в следующем: https://www.sgi.com/tech/stl/stl_introduction.html
Смотрите также:
- https://www.sgi.com/tech/stl/doc_introduction.html
- http://www.generic-programming.org/about/intro/concepts.php
- http://www.generic-programming.org/languages/conceptcpp/specification/
Вы также можете быть заинтересованы в:
- Библиотека проверки концепции Boost (BCCL): http://www.boost.org/doc/libs/master/libs/concept_check/concept_check.htm
- Новые концепции итераторов: http://www.boost.org/doc/libs/master/libs/iterator/doc/new-iter-concepts.html