Pensez-y :
int ia[3][4];
for (auto row : ia)
for (auto col : row)
Le premier
for
itère sur ia, dont les éléments sont des tableaux de taille 4. Parce querow
n'est pas une référence, lorsque le compilateur initialiserow
il convertira chaque élément du tableau (comme tout autre objet de type tableau) en un pointeur vers le premier élément du tableau. ) en un pointeur vers le premier élément de ce tableau. Par conséquent, dans cette le type derow
estint*
.
Je ne suis pas vraiment sûr de comprendre le fonctionnement de cet auto, mais si je peux supposer qu'il donne automatiquement un type à une ligne sur la base de ia
type de membres de tableau, mais je ne comprends pas pourquoi ce type de for
où row n'est pas une référence, n'est pas valide. Pourquoi cela se produit-il ? "pointeur vers le premier élément de ce tableau" à cause de quoi ?