// { dg-do assemble  }

template < class T > class A
{
public:
  typedef typename T::myT anotherT; // { dg-error "" } undefined type

  anotherT t;

  A() { }
  A(anotherT _t) {
    t=_t;
  }

  anotherT getT() {
    return t;
  }
};

class B : public A< B > // { dg-message "" } forward declaration
{
public:
  typedef int myT;
};

int main() {
  B b;
}
