Список стандартных концепций?

Из того, что я помню, в 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

Доступны несколько списков понятий:

Для получения дополнительной информации см. "Концепции и моделирование", а также "Уточнение" в следующем: https://www.sgi.com/tech/stl/stl_introduction.html

Смотрите также:

Вы также можете быть заинтересованы в:

Другие вопросы по тегам