Factory Pattern in modern C++ - using unique_pointer...