std :: bind有多少个参数(VC 11只支持4个)

jga*_*gaa 6 c++ visual-studio c++11

我正在玩Visual Studio 11的开发者预览版.

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

我在C++ 11标准论文中找不到任何相关内容.是否定义了最小数量的参数,还是所有实现依赖?

Tho*_*tit 7

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

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

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


Joh*_*itb 0

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

这是未定义行为的一种情况,超出了实现限制。这与您尝试将 1TB 文件输入编译器但内存不足没有什么不同。