Деструкторы у встроеных типов
От: BOPOH_N Россия  
Дата: 06.02.04 10:15
Оценка:
Написал такой код:
template <typename T> 
void DbgDelete(T* p)
{    
    p->~T();    
    operator delete(p);
}


с удивлением обнаружил что VC 7.0 нормально компилит следующий код
int *i(new int);
DbgDelete(i);


В моем понимании вызов деструктора встроеного типа — некорректная операция. Но VC просто пропускает эту строку и не генерит никакого кода (проверял под отладчиком).
Вопрос это соответствует стандарту?
В искустве летать есть один маленький секрет. Секрет этот в том,чтобы бросить себя изо всех сил на землю — и не попасть. Выберете погожий денек и попробуйте сами.
Re: Деструкторы у встроеных типов
От: Lorenzo_LAMAS  
Дата: 06.02.04 10:17
Оценка:
нормально все.
нельзя только написать pi->~int(); (с тайпдефом для int можно и такое).
Of course, the code must be complete enough to compile and link.
Re: Деструкторы у встроеных типов
От: Vamp Россия  
Дата: 06.02.04 10:36
Оценка:
Раз у них есть псевдоконструкторы, есть и псевдодеструкторы.
Да здравствует мыло душистое и веревка пушистая.
Re: Деструкторы у встроеных типов
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 06.02.04 10:48
Оценка:
Здравствуйте, BOPOH_N, Вы писали:

BOP>Вопрос это соответствует стандарту?


Да, деструкторы встроенных типов нужны в основном для того, чтобы можно было единообразно описывать шаблоны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.