#include <vector>
template <class C>
class Cow {
  typedef std::vector<C> vect;
  typedef vect::iterator it;
};

On line 5, the iterator typedef, I get the very odd error that (reconstituting
the types) vect::iterator is not derived from type Cow<C>.

It took me rather a long time to figure out that what it meant is that I needed
to write:
  typedef typename vect::iterator it;
How in the world did this get turned into an error about how "type A is not
derived from type B" ?

This is gcc-3.4, 4.0, and 4.1 ; 3.2 and 3.3 warn me it's implicitely a
typename.


-- 
           Summary: mystefying error "type A is not derived from type B"
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: benoit dot hudson at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30754

Reply via email to