Clang 8的Lambda表达中的双重崩溃
Double-free crash in lambda expression with clang 8
将std :: vector移动到lambda表达式和lambda表达式上时,我会在Clang 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;
}
}
在Wandbox中尝试一下
同时,我在llvm bugzilla中找到了匹配的错误报告:
https://bugs.llvm.org/show_bug.cgi?id=41810
我现在相信这是编译器错误,而不是我的代码中的问题。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 可组合的lambda/std::函数与std::可选
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何建立使用模板函数的lambda函数的尾部返回类型
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何将lambda作为模板类的成员函数参数
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- Clang 8的Lambda表达中的双重崩溃
- 调用 lambda 的结构/类成员时程序崩溃并"bad_function_call"
- C++ lambda 中的互斥锁会导致崩溃
- 调用从 lambda 作为模板参数传递的成员函数指针会崩溃
- 崩溃当std ::函数是从lambda返回的VS 2012中返回的值时的崩溃
- 使用Armadillo类型的lambda函数崩溃的未知原因
- 为什么我的C++程序在将 lambda 转换为函数指针时崩溃