// 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,它必须是非类型模板参数问题,但我找不到正确的方法。感谢。
答案 0 :(得分:1)
错误在这里startStop
。
在此上下文中,std::ref(p_app->app_inst)
的第二个参数应为std::thread
,但instance*
只是p_app->app_inst
类。
所以答案是instance
没有任何lambda函数。