разумно порешать этот вопрос?
                  
                  
                  
                  
                  
                  Есть некий интерфейс, IHistory, который оперирует интерфейсом ICommand:
                  
                  
                  
                  
                  
                      std::list<std::unique_ptr<ICommand>>::iterator begin();
                  
                  
                      std::list<std::unique_ptr<ICommand>>::iterator end();
                  
                  
                      std::list<std::unique_ptr<ICommand>>::iterator top();
                  
                  
                  
                  
                  
                  Его реализует класс DrawHistory, который должен оперировать классом DrawCommand (реализует интерфейс ICommand). Но тк смарт поинтеры не ковариантны, то я не могу использовать DrawCommand.
                  
                  
                  
                  
                  
                  Изначальная идея была в разделении уровней абстракции, но что-то не сложилось с таким раскладом. Я правильно понимаю, что dynamic_cast это моя судьба в данном случае?
                  
                  
                
есть же dynamic_pointer_cast и static_pointer_cast для этого (в отличие от dynamic_cast и static_cast)
Обсуждают сегодня