Вот так заработало:
X++:
return _cmd == Command::CopyAll ? EditCopyAll::construct ()
: _cmd == Command::Copy ? EditCopy::construct ()
: _cmd == Command::MoveAll ? EditMoveAll::construct ()
: _cmd == Command::Move ? EditMove::construct ()
: null;
Похоже действительно лажает компилятор, конструктор здесь имеет какое-то особое значение.
Все это ребята не весело