1  class A {};
       2  
       3  template <class T>
       4  struct B
       5  {
       6    typedef A E;
       7  };
       8  
       9  template <class T>
      10  struct C
      11  {
      12    typedef B<T> D;
      13    typedef typename D::E E;
      14    void f()
      15  #if __cplusplus < 201103L
      16    throw(E)
      17  #endif
      18    ;
      19  };