struct empty { }; template struct indirect { typedef empty real; }; template struct S : indirect::real { }; /* Currently S's base class is simply 'empty'. We might want a way to reach the unevaluated 'indirect::real'. */ S x;