首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::bind有多少个参数(VC11只支持4个)

std::bind有多少个参数(VC11只支持4个)
EN

Stack Overflow用户
提问于 2012-02-05 18:42:00
回答 3查看 2.3K关注 0票数 6

我正在玩Visual Studio11的开发者预览版。

我偶然发现的一个缺点是std::bind只支持4个函数参数。

我在C++11标准论文中找不到任何关于这方面的内容。是否定义了最小数量的参数,或者是否所有参数都依赖于实现?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-05 20:12:11

它是一些依赖于实现的值。如果超过了参数的数量,实现可能会崩溃或做一些其他愚蠢的事情。实际的C++11实现在这里使用了可变模板(VC++还没有该功能),因此它们的限制对每个人来说都应该足够了。

这是一种未定义的行为,超出了实现限制。这与您有一个1TB的文件试图输入到编译器,但它耗尽了内存没有什么不同。

票数 0
EN

Stack Overflow用户

发布于 2012-02-06 07:05:49

在VC11中,您可以通过设置_VARIADIC_MAX来增加可变模板仿真方案使用的最大参数的数量。默认值为5。

查看此处:http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx

如果你需要更多的参数(例如,你有使用6元组的VC9 SP1或VC10编译的代码),有一个逃生舱。您可以在项目范围内定义5和10之间的_VARIADIC_MAX (默认值为5)。增加它将使编译器消耗更多内存,并且可能需要您使用/Zm选项为PCHes保留更多空间。

票数 7
EN

Stack Overflow用户

发布于 2012-02-05 23:51:27

实际上,这意味着VC11还不支持可变模板。然而,他们可以硬编码四个以上的代码。Boost库一直都是这样做的,最多可以使用10个参数的样板(例如,在details目录中查看signals2 )。四个争论是一个可怕的小数字,不能停下来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9148576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档