|
|
|
|
|
by Const-me
2325 days ago
|
|
Quite a few times, I've made C++ library APIs like this: struct iface
{
virtual ~iface(){ }
virtual void doSomething() = 0;
static std::unique_ptr<iface> create();
}
I don't know good ways to replace unique_ptr here.Requiring library users to #include the concrete implementation is not good: inflates compilation time, pollutes namespaces, pollutes IDE's autocompletion DB. Can go C-style i.e. pass double pointer argument to the factory, or return raw pointer. But then user needs to remember to destroy the object. |
|
But it would often be better to make a move-only value type, and return that instead.