c++ - MSVC 2012 RC std::thread 实现中的最大参数数?

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

显然,当前 MSVC 2012 RC 中的 std::thread 实现的 std::thread 参数有最大数量限制。

此代码在 MSVC 和带有 -std=c++0x 的 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();

error C2661: 'std::thread::thread' : no overloaded function takes 7 arguments

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

最佳答案

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

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

编辑:

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

关于c++ - MSVC 2012 RC std::thread 实现中的最大参数数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153352/

相关文章:

c++ - 在 C++ 中创建编辑框的最简单方法是什么

包含模板类的C++编译程序

c++ - 我们有更多的静态变量内存空间吗?

php - 用线程yii模型扩展组件后yii 1.x无法正常工作

c++ - 我可以在一个线程中写入变量并在 C++ 中的另一个线程中读取它吗

java - 顺序运行 Java 线程

c++ - 从客户端收到所有数据后提升 asio streambuf 垃圾

cout<<char(int) 转换上的 C++ EOF

c++ - 如果需要创建一个 ofstream

c++ - 在 Windows 中使用 Tesseract 4