Non-ANSI operator new
От: Посторонним В. Беларусь  
Дата: 16.05.06 16:00
Оценка:
Как известно, по стандарту operator new должен кидать исключение при невозможности выделить память.
Однако есть реализации, которые возвращают в этом случае 0 (для совместимости с legacy кодом). Напимер, VC6.

Вопрос:
Есть ли возможность определить какой оператор new (стандартный или нет) будет использован в compile-time?

то есть хочется вроде тогоЖ
void* allocate(size_t count) /*throw std::bad_alloc*/
{
  void* p =  ::operator new(count);
#ifndef STANDARD_NEW
  if (!p)  throw std::bad_alloc();
#endif
  return p;
}


Просто без #ifndef будет лишняя проверка в runtime.
Или я занимаюсь premature optimization?

Или может просто запользовать (std::nothrow) new?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.