------- Comment #26 from twhitehe at uwo dot ca 2007-02-16 15:04 -------
There is actually two different bugs here.
The original bug is a (rather convoluted) duplicate of 4882. It still remains
unresolved as of gcc-4.1.
The nested_deduction.zip source, which was submitted much later, demonstrated a
different problems. Nested templates didn't match on template template
specializations. A vastly simplified (over the nested_deductions code) example
is:
template<typename>
struct A {
template<typename>
struct B { };
};
template<typename>
struct C { };
template<template<typename> class c,typename t>
struct C<c<t> > {
typedef int type;
};
int main(void) {
C<A<void> >::type val0 = 0;
C<A<void>::B<void> >::type val1 = 0; // Dies here
return val0+val1;
}
With earlier versions of gcc, this would give the error
Simplified.cpp:17: error: `type' is not a member of type `C<A<void>::B<void>
>',
with gcc 4.1 it now compiles fine.
I appear, however, to not have the power to change the status of this report,
so someone else will have to.
--
twhitehe at uwo dot ca changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |twhitehe at uwo dot ca
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13088