Кто-нибудь может объясненить, почему следующий код компилируется
class cClass
{
};
int main(int argc, char* argv[])
{
const cClass* obj = new cClass;
delete obj;
return 0;
}
(как VC++ .NET, так и gcc 3.2 компиляторами) несмотря на следующее утверждение (MSDN, статья 'delete Operator'):
Pointers to const objects cannot be deallocated with the delete operator.
?
Я понимаю, что если запретить удаление динамически созданного константного объекта (без грязных трюков с явным преобразованием типов и использования const_cast), это тоже будет плохо, и все же...
Хотя в стандарте С++ (пункт 5.3.5.2) говорится, что все корректно юна, MSDN врёт?