This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: bug in template function specialization


David Mazieres <dm@reeducation-labor.lcs.mit.edu> writes:

> However, I still believe there is a problem with template
> specialization in egcs.

You're right, the problem seems to have something to do with matching
a typedef'ed type.  The testcase below should produce four errors,
because all declarations of baz[1-4] refer to incomplete types.
However, the latest snapshot will not match the specialization when
the template argument is a typedef, as in your example, that it was a
size_t.  Robert, will you please add this test case?  (No patch this
time, sorry)

// Build don't link:
// Tests partial specialization
template<class T> struct foo1 {};
template<class T, int n> struct foo1<T[n]>;
foo1<char> bar1;
foo1<char[10]> baz1; // ERROR - incomplete type

template<class T> struct foo2 {};
template<class T, unsigned n> struct foo2<T[n]>;
foo2<char> bar2;
foo2<char[10]> baz2; // ERROR - incomplete type

typedef unsigned int other1_t;
template<class T> struct foo3 {};
template<class T, other1_t n> struct foo3<T[n]>;
foo3<char> bar3;
foo3<char[10]> baz3; // ERROR - incomplete type - XFAIL *-*-*

typedef int other2_t;
template<class T> struct foo4 {};
template<class T, other1_t n> struct foo4<T[n]>;
foo4<char> bar4;
foo4<char[10]> baz4; // ERROR - incomplete type - XFAIL *-*-*

-- 
Alexandre Oliva
mailto:oliva@dcc.unicamp.br mailto:aoliva@acm.org
http://www.dcc.unicamp.br/~oliva
Universidade Estadual de Campinas, SP, Brasil



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]