Здравствуйте, T4r4sB, Вы писали:
S>>Если не брать в рассмотрение placement new, то разве что для создания объектов с private/protected конструкторами.
TB>Мне казалось что для этого используются статик методы, создающие объект
Простенький пример:
#include <memory>
class manager;
class worker {
friend class manager;
int i_;
worker(int v) : i_{v} {};
public:
int i() const noexcept { return i_; }
};
class manager {
public:
int do_something() {
std::unique_ptr<worker> in{ new worker(0) };
return in->i_;
}
};
int main() {
manager o;
return o.do_something();
}
В manager::do_something не получится использовать std::make_unique, т.к. конструктор у worker-а приватный.
И не важно, будет ли do_something статическим или нет.