Requires-выражение в С++20 позволяет задавать требования к типам параметров шаблонов.
Это дает возможность выполнять проверку типов во время компиляции и позволяет создавать перегруженные шаблоны функций и классов с разными требованиями к типам.
Requires-expressions помогают создавать более гибкие и безопасные шаблоны, улучшают читаемость кода и помогают компилятору генерировать более качественные сообщения об ошибках.
В примере для каждой перегрузки функции
add используется requires-выражение, которое накладывает ограничения на тип параметра T. Это позволяет компилятору выбрать нужную перегрузку в зависимости от типа аргументов.
