Допустим, у меня есть иерархия классов IWidget. Классы создаются фабрикой:
unique_ptr<IWidget> CreateWidget(...);
и далее хранятся или как сам unique_ptr, или как vector<unique_ptr>.
И есть у меня свободные функции, который этот виджет принимают. Сейчас это так:
void DisplayWidget(const IWidget&);
void ChangeWidget(IWidget&);
Но, естественно, для передачи в них моих виджетов, указатель все время приходится разыменовывать.
Вопрос:
Имеет ли смысл делать сигнатуру функций как-то иначе?
Если да, то как?
P.S. Я частично прочитал Мейерса "Effective Modern C++": там поется ода unique_ptr вообще и его применению в фабриках в частности, но вот что делать дальше я не нашел (в разделе про умные указатели).