Děkuji za zmínku o boost::recursive_wrapper . Zrovna asi předevčírem jsem naznal, že něco takového nevyhnutně potřebuju (zacyklit několik šablon, aby na sebe navzájem odkazovaly) a že v C++ je to normálním způsobem ilegální. I zmastil jsem si takovou věc jednoúčelově na koleně (někde něco jsem obalil do obyčejné třídy, na kterou se dá udělat forward deklarace). Teď vím, že je na to šablona :-D