gpt4 book ai didi

c++ - VS2015 中的 std::thread 错误 C2893

转载 作者:行者123 更新时间:2023-11-28 06:08:31 25 4
gpt4 key购买 nike

// C2893.cpp
// OK in VS2013, Error in VS2015
// compile with: /EHsc
#include <thread>
//
template <typename T_app>
struct instance
{
void load() {;}
};
//
template <typename T_app>
struct scene
{
T_app *p_app;
void thread_load() {
std::thread(&instance<T_app>::load, std::ref(p_app->app_inst) ).detach();
}
};
//
struct app
{
instance<app> app_inst;
scene<app> app_scene;
};
//
int main() {
app my_app;
my_app.app_scene.p_app = &my_app;
// OK in VS2013, Error in VS2015
my_app.app_scene.thread_load();
return 0;
}

你好,我刚更新到VS2015,VS2013中的代码是可以的,请问如何纠正thread_load()的错误?我阅读了 Visual C++ 2015 中的 Breaking Changes,这一定是非类型模板参数问题,但我找不到正确的方法。谢谢。

最佳答案

错误在这里std::ref(p_app->app_inst) .std::thread的第二个参数应该是 instance*在这种情况下,但p_app->app_inst只是一个instance类。

所以答案是std::thread(&instance<T_app>::load, &p_app->app_inst ).detach();没有任何 lambda 函数。

关于c++ - VS2015 中的 std::thread 错误 C2893,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31849554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com