Modifed the old RobotExample to use a vector of shared_ptr for the colour rather than an array of shared_ptr.  Some fo this is rather ugly and may not be correct.  Original motivation for this was due to issues with my Growing Neural Gas Network, which uses a similar array of shared_ptrs with itterators.  In both cases it seems to be the copy constructor and move constructor which are the most complex as they require access to copy the private variables.  Can copy/move constructors access the private members of a sybling?