我需要专门研究std::thread模板化构造函数。

以下代码使用g++可以很好地编译,而在使用clang++(6.0)进行编译时则失败。

#include <thread>

class MyThread
{
  public:
    void start()
    {
      run();
    }

    virtual void run(void) {};
};


namespace std
{
  template<>
  thread::thread<MyThread*>(MyThread*&&)
  {
  }
}

int main(int argc, char *argv[])
{
  std::thread myThread(new MyThread);
  return 0;
}

我收到以下错误:
  thr2.cpp:18:17: error: expected unqualified-id
  thread::thread<MyThread*>(MyThread*&&)

您有什么想法可能是什么问题吗?
问候,

最佳答案

这是不合法的。您可以为每个[namespace.constraints]\2添加规格

但是,[namespace.constraints]\4继续指出

所以你不能这样做。

关于c++ - std::thread构造函数“特化”。 g++与clang++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50236242/

10-11 19:05