И если да, то почему следующий код дает мне предупреждение
note: ни деструктор, ни оператор-оператор не будут вызваны, даже если они объявлены, когда класс определен
?
struct C;
int main()
{
C *c = nullptr;
delete c;
return 0;
}
Я понимаю, почему это может быть поведение undefined в общем случае, если C
имеет нетривиальные/виртуальные деструкторы, но не гарантирует ли стандарт/определяет, что delete
на nullptr
всегда a noop
независимо от ситуации?
Повторить: я спрашиваю конкретно о случае, когда указатель на неполный тип nullptr
!