Почему вызывается деструктор для объекта, который не был удален?
Вопрос на StackOverflow: Проблема с компиляцией из-за удаленного деструктора
У меня есть следующий код на C++:
struct A
{
~A() = delete;
};
int main()
{
new A{};
}
При компиляции я получаю сообщение об ошибке:
error: use of deleted function 'A::~A()'
new A{};
Как я понимаю, я не уничтожаю объект, так почему компилятор пытается вызвать деструктор?
Код компилируется с помощью:
g++ -std=c++17 -O2
Я использую GCC 8.1.0. Может кто-то объяснить, почему возникает эта ошибка и как ее можно решить?
Правила использования символа подчеркивания в идентификаторах C++
Что говорит стандарт C++ о размерах типов int и long?
Удален конструктор по умолчанию. Объекты все еще могут быть созданы... иногда
Каков смысл фразы "зарезервировано для любого использования"?
Является ли ++*ptr++ некорректным поведением в C++?