Характеристика в С++ инкапсулирует семейство операций, которые позволяют алгоритму или структуре данных работать с тем типом, с которым он создается. char_traits - пример группировки string - и требуемых файлов функций.
Но не все черты имеют "черту" в их имени, верно? numeric_limits приходит на ум. Это тоже "черта" ? Даже без названия "черта" в нем?
Итак, существуют ли другие шаблоны, которые можно/следует считать "чертой"?. Помимо примеров, которые я нашел:
-
allocator_traitsкак получить память -
pointer_traitsкак косвенно получить доступ к объекту -
type_traitsметапрограммирование -
char_taitsдля последовательности символов -
iterator_traitsкак двигаться вперед, назад и к элементу -
regex_traitsдля... регулярных выражений.
Я думаю, что я тоже спрашиваю, есть ли чистое определение для черт?
Некоторые вещи, о которых я особенно не уверен, следующие:
-
numeric_limits, упомянутый выше -
<chrono>"характеристики" настройки [20.11.4], т.е.duration_values - как насчет Хэшинга? Может ли функтор
hash<>считаться признаком? - Если это так, не все требования "черты", например "CopyAssignable" и т.д.
- И тогда, заброшенные "Концепции" - это конечная "черта" - определение?
Обновление: Вопрос о том, что именно делает черту признаком, кажется немного противоречивым в деталях. Может быть, на другой вопрос можно ответить: Есть ли исчерпывающий список, который из классов, подобных черту, является новым для С++ 0x, а какие уже были в С++ 03? Возможно, кто-то знает ссылки куда-нибудь?