Потенциальное исправление : явно укажите деструктор для CSomething
в вашем исходном файле (даже если он просто пуст).
Почему это, вероятно, работает : Исходя из комментариев и превосходного вопроса Рупа, я предполагаю, что CAnother
пытается удалить COldStuff
, и в этот момент он должен быть виден. Теперь, если вы явно не определили деструктор для CSomething
, эта часть тоже создается inline (в основном в заголовке, сообщая об ошибке). Однако, если вы явно определите деструктор в файле cpp CSomething
, там создается неявный CAnother<COldStuff>::~CAnother
, и вы можете разрешить циклическую зависимость.