Ну, вы просто не можете этого сделать, и вы уже указали, почему это так.
Больше думайте о логике, чем о синтаксисе, поскольку определение базового класса может очень отличаться в зависимости от того, чтоего аргумент шаблона таков, и поскольку определение базового класса может очень хорошо повлиять на работу TestInner
, вы пытаетесь создать циклическую зависимость, которая просто невозможна в нашей физической реальности.
Вы можете поэкспериментировать сиспользуя TestImplement
в качестве аргумента шаблона (CRTP!), а затем ищите typename TemplateArgument::TestInner
из базы, но даже если это работает, я сомневаюсь в его ясности.
Вместо этого я бы использовал не вложенный класс.