Вы можете создать свои собственные классы черт, чтобы проверить тип интерфейса Контейнера. Это может включать проверку наличия определенных связанных типов (таких как container::iterator
) и проверку правильности определенных выражений (таких как container.empty()
) (т.е. они компилируются без ошибок). Различные методы SFINAE могут использоваться для создания классов признаков, которые проверяют вложенные типы и проверяют выражения.
Страница SGI подробно определяет связанные типы и допустимые выражения, которые должны предоставлять типы, которые моделируют «концепцию» Контейнера. Самый последний стандартный документ ISO C ++, вероятно, предоставит более авторитетный источник, поскольку страница SGI довольно старая.
Конечно, классы черт не могут проверять семантику выражений вроде container.empty()
; они могут только проверить, что выражения являются законными. В некоторых предлагается расширение языка, чтобы позволить программисту утверждать семантические свойства выражений, которые могли бы устранить это ограничение.