Quando provo a compilare il seguente codice nel gcc 4.8.2, ottengo il seguente errore:Gamma basati per-loop su matrice passata alla funzione principale non
test.cc: In function ‘void foo(int*)’: test.cc:15:16: error: no matching function for call to ‘begin(int*&)’ for (int i : bar) { ^
Insieme con un gruppo, mentre altri da più in profondità nella libreria dei modelli.
#include <iostream>
using namespace std;
void foo(int*);
int main() {
int bar[3] = {1,2,3};
for (int i : bar) {
cout << i << endl;
}
foo(bar);
}
void foo(int* bar) {
for (int i : bar) {
cout << i << endl;
}
}
Se ridefinire foo
usare un indicizzato per ciclo, allora il codice compila e funziona come previsto. Inoltre, se sposto il ciclo di output basato su intervallo in main
, ottengo anche il comportamento previsto.
Come passare l'array bar
a foo
in modo che sia in grado di eseguire su un loop basato su intervallo?