
10 Mar
2004
10 Mar
'04
12:28 p.m.
"Allen Yao" <yaozhen@ustc.edu> writes:
It seems that gcc does not allow this kind of template argument deduction:
template <int N> void f(int a[N]) { for (int i = 0; i < N; i++) cout << a[i] << " "; cout << endl; }
int main() { int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
f(a); }
The error message is:
error: no matching function for call to `f(int[10])'
I would like to know how to fix this. Is there any workaround? Or if I am missing something?
You're missing something. Your declaration of f is equivalent to: template <int N> void f(int* a); try: template <int N> void f(int a(&)[N]) ^^^ instead. -- Dave Abrahams Boost Consulting www.boost-consulting.com