Константность для нереферентных аргументов имеет лишь незначительное значение.
Стандарты определяют "важные" вещи с точки зрения вызывающей стороны .
Константность этих аргументов по значению не изменяет и не может изменить любой код, который их использует.Разработчик может позаботиться о себе.
Обновление: Вы можете написать это таким образом, если хотите.
int f (const int);
int f (int) {return 0;}
int main () {
int i;
f (i);
}
Я не получил никаких ошибок с вышеупомянутым,Продолжайте и установите свой size_t: -)
Чтобы предвидеть возражение: здесь f
заменяет operator new
или что-то еще.Таким образом, у нас есть противоречивое объявление / определение, но компилятор не жалуется.Зачем?Потому что это просто не имеет значения.