std::shared_ptr 空检查会导致编译致命错误

std::shared_ptr null check results in compilation fatal error

本文关键字:致命错误 编译 shared ptr std 检查      更新时间:2023-10-16

我想检查某个shared_ptr是否为空。

typedef std::shared_ptr<program> ProgramPtr;
ProgramPtr progPtr =output.getProgram(num);
if (!progPtr)
return false;

当我构建项目时,我收到一个错误:

" 致命错误 C1001:编译器中发生内部错误。"

仅当我在发布配置中构建而不是在调试配置中构建时,才会发生这种情况。

此外,以下空检查不会在构建中产生任何问题

int index = progPtr? progPtr->getIndex() : -1;

知道为什么会这样吗?

编译器版本 Visual Studio c++ 14.1

问题与shared_ptr无关。导致错误的行是:

return false;

问题是"return false"在线程循环中

#pragma omp parallel for num_threads(nThreads) private(locPt) 

似乎不可能在线程内返回。