An std::vector< std::unique_ptr<Base> >
- это просто вектор, заполненный указателями на базы.И вы не можете получить доступ к содержимому производного класса через указатели / ссылки базового класса - даже если объекты производных классов находятся за этими указателями / ссылками.
Это ничем не отличается от этого:
SubInfo si(1);
Info& info = si;
info.someInfo; // won't compile
Это не означает, что за info
нет объекта производного класса.Есть.Но вы не можете получить к нему доступ, кроме того, что доступно через интерфейс базового класса .Это основной ОО.