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

Reply via email to