| 
 Actually,
 It is complaining because the function is defined as retruning a reference to a variable, and it is returning a local variable. The local variable technically does not exist once the function returns, because it is out of scope. So you are returning a reference to a variable which does not exist from the perspective of the caller.
 
 inline const bool&   IsRooted() { return rooted || permarooted; }
 
 there is no reason this function should return a reference, as doing an assignment on the returned value dosent make any sense (besides the fact that it is const), and that is the reason to return a reference.
 
 simple fix is:
 inline const bool   IsRooted() { return rooted || permarooted; }
 |