Маркировка значений параметров «const» - определенно субъективная вещь.
Однако на самом деле я предпочитаю отмечать значения параметров const, как в вашем примере.
void func(const int n, const long l) { /* ... */ }
Значение для меня ясно указывает на то, что значения параметров функции никогда не изменяются функцией. Они будут иметь то же значение в начале, что и в конце. Для меня это часть поддержания стиля очень функционального программирования.
Для короткой функции, возможно, является пустой тратой времени / пространства, чтобы иметь там "const", поскольку обычно довольно очевидно, что аргументы не модифицируются функцией.
Однако для более крупной функции это форма документации по реализации, и она обеспечивается компилятором.
Я могу быть уверен, что если я сделаю какое-то вычисление с 'n' и 'l', я смогу реорганизовать / переместить это вычисление, не боясь получить другой результат, потому что я пропустил место, где один или оба изменены.
Поскольку это деталь реализации, вам не нужно объявлять параметры-значения const в заголовке, точно так же, как вам не нужно объявлять параметры функции с теми же именами, что и в реализации.