我正在使用MSVC 19.0.23506.0并且无异常地构建:
通过CMake删除了异常处理:
string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
这意味着CXX标志如下:
/DWIN32 /D_WINDOWS /GR /W4 /MP
以下最小示例足以重现我的错误:
#include <typeinfo>
int main(int, char**)
{
std::type_info* ptr = nullptr;
return 0;
}
编译上面的示例会导致以下错误:
main.cpp(6): error C2039: 'type_info': is not a member of 'std'
为什么MSVC在禁用异常时禁用对type_ids的支持,尽管通过/GR
标志启用了RTTI的使用。
(看起来它取代了整个vcruntime_typeinfo.h
标头以删除type_info定义。)