|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2004-03-10 07:28:17
"Allen Yao" <yaozhen_at_[hidden]> 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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk