Я получаю ошибку компилятора с LLVM 4.1:
/Users/vibhor/src/mam/client_daemon/source/core/_osx/UtilSystem_OSX.cpp:261:32: Out-of-line definition of 'what' does not match any declaration in 'std::bad_typeid'
для следующего кода:
const char* ::std::bad_typeid::what() const throw() { return NULL; }
Есть ли способ подавить это? Он прекрасно компилируется с GCC.
Мой оригинальный ответ, который состоял в том, чтобы попытаться скомпилировать с другим stdlib, был полностью неосновным.
Это похоже на попытку компиляции с использованием 10.5 SDK, у которого bad_typeid отличается от ожидаемого. Обходной путь является защитой от определения:
#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
const char* ::std::bad_typeid::what() const throw() { return NULL; }
#endif
Других решений пока нет …