Что означает «предупреждение C4987: используется нестандартное расширение:« throw (…) »& quot; имею в виду?

Я пытаюсь скомпилировать проект VC ++, и он жалуется на эту ошибку

Microsoft Visual Studio 10.0\VC\atlmfc\include\atlalloc.h(517): warning C4987: nonstandard extension used: 'throw (...)'

и линия, на которую он указывает

_Ret_opt_bytecap_x_(nElements * sizeof(T)) T* Allocate(_In_ size_t nElements) throw( ... )
{
return( AllocateBytes( ::ATL::AtlMultiplyThrow(nElements,sizeof( T )) ) );
}

0

Решение

Это означает, что throw(...) Спецификация исключения — это нестандартное расширение (не отвечающий, если когда-либо было) … то есть стандарт C ++ не определяет значение для этого фрагмента кода. В Visual Studio это означает, что функция может выдавать любые исключения.

Если бы это был ваш собственный код, вы могли бы исправить предупреждение, просто удалив спецификацию исключений (ну, в любом случае, для исключений C ++; я не знаю, как это повлияет на обработку структурированных исключений Microsoft).

3

Другие решения

Других решений пока нет …