function template specialization problem

Daniel Llorens del Río daniel.llorensdelrio@epfl.ch
Tue Mar 21 22:10:00 GMT 2006


On 21 Mar, 2006, at 20:16, rodolfo@rodsoft.org wrote:

> Hi, I don't know if this is a C++ or g++ problem, but this snippet
> doesn't compile, but I think it should:
>
> template <class T> void test(const char *par);
>
> template <> void test<int>(const char *par = 0) {}
>
> int main()
> {
>     test<int>();
> }
>
> g++ 3.4.5 returns the following errors:
> test.cpp:3: error: default arguments are only permitted for  
> function parameters
> test.cpp:7: error: no matching function for call to `test()'

The first error message is unclear, but the code is illegal anyway.  
You cannot declare a default parameter in a specialization. You must  
declare it in the function template declaration, and only there.



More information about the Gcc-help mailing list