2008/10/10 Peter A. Felvegi <[EMAIL PROTECTED]>
>
> Hello All,
>
> I've run into this:
>
> ----8<----8<----8<----
> template<typename F, typename A>
> class B
> {
> protected:
>        static const int i = 42;
> };
>
> template<typename F, typename A>
> class D : protected B<F, A>
> {
> public:
>        D(int n_ = B<F, A>::i); // line 12
> };
> ----8<----8<----8<----
>
> gcc-4.1 and 4.3 give the same error message:
>
> t.cpp:12: error: expected ',' or '...' before '>' token
> t.cpp:12: error: wrong number of template arguments (1, should be 2)
> t.cpp:2: error: provided for 'template<class F, class A> class B'
> t.cpp:12: error: default argument missing for parameter 2 of 'D<F, A>::D(int, 
> A)'
>
> If I write D(int n_ = (B<F, A>::i) ), then it compiles. Imho it should 
> compile w/o the extra parentheses. VC++ 2008 Express compiled it. Wanted to 
> test gcc 4.4, too, but I wasn't able to compile the 20081003 snapshot 
> (/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or 
> directory). I have a debian lenny/amd64 system.
>
> Regards, P

Your example compiles without errors with a gcc built on Mac OS X 10.4
from recent svn head (revision 140993, from Wednesday).

-- James

Reply via email to