错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”

Posted

技术标签:

【中文标题】错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”【英文标题】:Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' 【发布时间】:2017-06-13 10:01:40 【问题描述】:

我在 Visual Studio 2015 项目的 C++ 类中使用 std::thread。

class BaggageSoln 
        void mainProcess();
        // Threading functions
        void run();
        void startZED();        
        void closeZED();
private:
        std::thread zed_callback;



void BaggageSoln::startZED()

    // Start the thread for grabbing ZED data
    has_data = false;
    zed_callback = std::thread(&BaggageSoln::run);

    //Wait for data to be grabbed
    while (!has_data)
        sleep_ms(1);


void BaggageSoln::mainProcess() 
void BaggageSoln::run() 
void BaggageSoln::closeZED()

xthread 文件第 238 行发生错误。 有什么问题?

【问题讨论】:

【参考方案1】:

&BaggageSoln::run 需要调用实例,将其设为static 或提供实例。

zed_callback = std::thread(&BaggageSoln::run, this);

【讨论】:

谢谢让我试试

以上是关于错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”的主要内容,如果未能解决你的问题,请参考以下文章

未能专门化功能模板

如何创建一个主函数需要引用参数的线程?

如何获取指向专门针对字符串的模板函数的指针?

C++模板,静态函数特化

无法强制实例化专用模板

这是一个已知的 VC14 错误吗