Характеристика в С++ инкапсулирует семейство операций, которые позволяют алгоритму или структуре данных работать с тем типом, с которым он создается. 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? Возможно, кто-то знает ссылки куда-нибудь?