當我嘗試編譯下面的代碼在GCC 4.8.2,我得到以下錯誤:一系列基於for循環的數組傳遞到非主要功能
test.cc: In function ‘void foo(int*)’: test.cc:15:16: error: no matching function for call to ‘begin(int*&)’ for (int i : bar) { ^
隨着別人的同時一堆從模板庫中的更深處。
#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;
}
}
如果我重新定義foo
使用索引for循環,則代碼編譯和行爲與預期。另外,如果我將基於範圍的輸出循環移動到main
,我也會得到預期的行爲。
如何將數組bar
傳遞給foo
以使其能夠在其上執行基於範圍的for-loop?