Написал такой код:
template <typename T>
void DbgDelete(T* p)
{
p->~T();
operator delete(p);
}
с удивлением обнаружил что VC 7.0 нормально компилит следующий код
int *i(new int);
DbgDelete(i);
В моем понимании вызов деструктора встроеного типа — некорректная операция. Но VC просто пропускает эту строку и не генерит никакого кода (проверял под отладчиком).
Вопрос это соответствует стандарту?