Разбираем, почему «универсальный»
template почти всегда имеет скрытые требования (операторы
+,
*, методы
size(), функции
begin()/
end()), откуда берутся «простыни» ошибок при инстанцировании, и как
concepts и constraints делают контракт видимым в сигнатуре и переносят диагностику ближе к месту вызова. На примерах с
Transaction,
sum2 и
safe_square показываем эффект и разбираем типичные ошибки.