当将std::载体移动到lambda表达式并将lambda表达式抛出时,我会在clang8.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;
}
}发布于 2019-08-02 07:31:35
https://stackoverflow.com/questions/57313551
复制相似问题