Если мы имеем, например, f и g, определенные как:
void f(const int *restrict a, const int *restrict b, int *c){ ... }
void g(const int * a, const int * b, int *c){ ... }
- Ассемблирование f и g имеет эквивалентные тела, являются ли они одинаковыми с точки зрения вызывающего?
- В вызываемой группе мы можем сделать те же предположения о параметрах?
- Есть ли у компилятора те же возможности оптимизации?
Если restrict
избыточно, я бы ожидал, что все три ответа будут да.
В противном случае, почему бы и нет?
Не принимайте во внимание плохие методы программирования, такие как отбрасывание квалификатора const
.