[temp.constr.decl] говорит, что мы можем ограничить шаблон или функцию с помощью выражения ограничения.
Заявители [dcl.decl] говорят нам, что для функций мы можем добавить необязательный конечный пункт require, чтобы ограничить его, и стандартный черновик n4820 даже приводит эти (казалось бы, бессмысленные) примеры:
void f1(int a) requires true;
auto f2(int a) -> bool requires true;
Я понимаю, что ограничение шаблона или концепции полезно, но я не вижу, насколько эти ограничения полезны для не шаблонных функций. Какой смысл ограничивать функцию без шаблонов?