Код: Выделить всё
new (ptr) X(X());
Пример кода:
Код: Выделить всё
struct X {
X() { }
X(const X&) = delete;
X(X&&) = delete;
~X() = delete; // or, e.g, private
};
void test(void* ptr) {
new (ptr) X(X()); // error: attempt to use a deleted function
}
ОБНОВЛЕНИЕ
Это аналогичный вопрос: почему публичный деструктор необходим для обязательного RVO в C++?. Но мой случай другой, поскольку в моем коде проблема потенциальных вызовов деструктора из-за исключений не возникает (или, по крайней мере, я ее там не вижу).
Подробнее здесь: https://stackoverflow.com/questions/787 ... not-called