Interfaces
I.9
Если интерфейс является шаблоном, документируйте его параметры с помощью концептов
Причина
Сделать интерфейс точно определённым и проверяемым во время компиляции в (не столь отдалённом) будущем.
Пример
Используйте стиль спецификации требований C++20. Например:
template<typename Iter, typename Val>
requires input_iterator<Iter> && equality_comparable_with<iter_value_t<Iter>, Val>
Iter find(Iter first, Iter last, Val v)
{
// ...
}
Смотрите также: Обобщённое программирование и концепты.
Контроль
Предупреждать, если любой не-вариадический параметр шаблона не ограничен концептом (в его объявлении или упомянут в выражении requires).