3) No Ctrl or derived class is Moveable because they contain internal pointers to other Ctrls. However, what is not clear from the docs is that virtual methods are Moveable, but abstract methods are not (ie. virtual void Abstract() = 0; is not allowed). Array can store non-moveable types, but Vector et al. cannot.
Actually, classes with virtual methods are explicitly NOT MOVEABLE.
Note that while with both MSC and GCC on x86, technically there is a little problem, we thought it is better to stay on the safer side, while "moving" objects with virtual methods makes only a little benefit.