[boost] Is there a Boost based solution to this circular reference problem