С такими кейсами понятно, что нельзя.
Я говорю только про те кейсы, когда когда конечный тип в линзе является уникальным
Это плохой код. Сегодня у тебя на 3-ем уровне типом Т было одно поле, а завтра стало называться по другому и поменялась семантика поля, а линза осталась та же, которая семантически была привязана к предыдущему полю и никакой компилятор не сможет подсказать, что изменилось что-то значимое и ты тоже не обратишь на это внимание. Поэтому в этом плане подобный автоматический подход на основе поиска уникальных вложенных типов с учетом произвольной вложенности - не рационален, лишний способ выстрелить себе в ногу на пустом месте, undefined behavior и т.д.