\[~ann.campbell.2] -I would remove {cpp}, because such inheritance is indeed totally valid, and is even a commonly used idiom see for instance the \https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern link-
After better understanding of this rule, I would still remove it for {cpp}, but for other reasons:
* There could be places where that works, because template specialization could break the recursion
* In places where it does not work, since templates are fully resolved during compilation, the code would not compile, so no need to report anything during analysis.