MSVC 2012 RC std::线程实现中的最大参数数

Maximum number of arguments in MSVC 2012 RC std::thread implementation?

本文关键字:数数 参数 实现 2012 RC std 线程 MSVC      更新时间:2023-10-16

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

此代码在 MSVC 和 g++ 中都可以很好地编译,并且带有 -std=c++0x:

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::线程::线程":没有重载函数需要 7 参数

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

MSVC2010没有

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

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

编辑

我刚刚意识到这是大约 2012 年的版本。正如蜜蜂在VS连接错误报告中读取的那样,它仍然不支持可变参数模板。