Здравствуйте, Feonyf, Вы писали:
F>Смотрю на код в бусте внутри call_once
F>void* const mutex_handle(::boost::detail::create_once_mutex(&flag));
F>BOOST_ASSERT(mutex_handle);
F>только ассерт ? А что будет если ::boost::detail::create_once_mutex возвратит ошибку, например в результате нехватки ресурсов ?
ничего,
если вы уж полезли в дебри boost, то могли бы посмотреть, что функция
::boost::detail::create_once_mutex(&flag)
возвращает void* ( что скорее всего HANDLE объекта ), посему ассерт вполне по месту для отладочной версии
в релизе будет неудачное создание объекта и скорее всего INVALID_HANDLE_VALUE
что вполне допустимо для winapi
и потом как реагировать когда ресурсов нет... прикрвать приолжение... кидать исключение...
это уже вопрос дискусии