MSVC 2012 RC std :: thread实现中的最大参数数量?

时间:2012-06-22 09:14:45

标签: c++ multithreading visual-c++ c++11 visual-studio-2012

显然,对于当前MSVC 2012 RC中的std :: thread实现,std :: thread的参数数量最多。

此代码使用-std = c ++ 0x:

编译MSVC和g ++
std::thread t = std::thread(printf, "%d, %d, %d, %d", 1, 2, 3, 4);
t.join();

但是对于超过6个参数,MSVC返回错误:

std::thread t = std::thread(printf, "%d, %d, %d, %d, %d", 1, 2, 3, 4, 5);
t.join();
  

错误C2661:'std :: thread :: thread':没有重载函数需要7   参数

这是某种意图吗?或者可能是MSVC实现中的错误?是因为MSVC中不支持可变参数模板吗?

1 个答案:

答案 0 :(得分:3)

MSVC2010没有可变参数模板,因此它们是在预处理器的帮助下实现的。

我认为您可以设置#define来设置支持的参数数量。我可以稍后检查,当我回到家时,它是哪一个。

修改

我刚刚意识到这是关于2012版的。正如可以在VS connect bug report中读到的那样,它仍然不支持可变参数模板。