struct empty { }; template struct indirect { typedef empty real; }; template struct S : indirect::real { }; /* Currently 'indirect' isn't in the database; the base class is simply 'empty'. We might want to also include 'indirect', with a way to reach the unevaluated 'indirect::real'. */ S x;