IMO it would help adoption if you supply a clang-powered rewriter into and out of your language variant. It allays the fear of losing your codebase if the compiler project dies. Reverse the default for typename. Currently some_class ::thing is assumed to be an expression where 'thing' is a variable, when we don't know which template pattern to use because there may be an explicit specialization on the T that the user…
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.