I'd like to be able to redeclare a member variable from the base in my derived with a covariant type.

  class FontInfo { /* ... */ };
  class TTFFontInfo : public FontInfo { /* ... */ };
  
  class Font { protected: FontInfo *info; /* ... */ };
  class TTFFont : public Font { public: using TTFFontInfo *info = Font::info; /* ... */ };
making TTFFont::info an alias for Font::info but with the derived type.