当将std :: vector移至lambda表达式中并引发lambda表达式时,我在使用lang 8.0时遇到双重崩溃。其他编译器(例如gcc或clang 7)的可执行文件正在运行,没有错误。
我在代码中做非法行为吗?
template<typename F>
void myExecute(F&& f)
{
f();
}
int main()
{
try {
std::vector<double> test = {0.0, 1.0};
myExecute([v = std::move(test)]() {
throw std::runtime_error("exception");
});
}
catch (const std::exception& e) {
std::cout << e.what() << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
与此同时,我在 llvm bugzilla 中找到了匹配的错误报告:
https://bugs.llvm.org/show_bug.cgi?id=41810
我现在确信这是一个编译器错误,而不是我的代码中的问题。