------- 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