typename6.C   [plain text]


// { dg-do compile }
// Contributed by Matt Austern <austern at apple dot com>
// PR c++/13407: Gracefully handle keyword typename in base class specifier.

struct A { };
struct B { typedef A Type; };

template <typename T>
struct X : 
  public typename T::Type  // { dg-error "not allowed in this context" }
{ };

X<B> x;

struct C : 
  public typename A        // { dg-error "not allowed outside of templates" }
{ };