Tengo función que recibe un vector de punteros de este modo:cómo contar una C o un compilador de C++ que los punteros no son alias
void foo(int *ptrs[], int num, int size)
{
/* The body is an example only */
for (int i = 0; i < size; ++i) {
for (int j = 0; j < num-1; ++j)
ptrs[num-1][i] += ptrs[j][i];
}
}
Lo que yo quiero transmitir al compilador es que los punteros ptrs[i]
son no alias uno del otro y que las matrices ptrs[i]
no se superponen. ¿Cómo voy a hacer esto? Mi segundo motivo es fomentar la vectorización automática.
Además, ¿hay alguna manera de obtener el mismo efecto que __restrict__
en un iterador de std::vector
?
Nota importante: El estándar C++ NO admite el calificador 'restrict' de C99 - no es incluso una palabra clave Así que cualquier uso de 'restrict' en un programa C++ se basa en una extensión de implementación –