【问题标题】:Maximum number of arguments for std::bind in clangclang 中 std::bind 的最大参数数
【发布时间】:2017-11-12 23:50:10
【问题描述】:

在我的 iOS Cocos2dx 应用程序中,std::bind 似乎无法处理 4 个绑定参数(对于 4 参数静态函数)。第四个参数总是垃圾。

如何在 XCode 中(使用 clang)检查 std::bind 的最大参数数量?可以改吗?

还是 Cocos 中的一些设置?

【问题讨论】:

  • 理论上它应该能够处理无限数量的参数。如果您尝试创建 Minimal, Complete, and Verifiable Example 并显示,那么也许我们可以告诉您您做错了什么。
  • 谢谢,这就是我现在想知道的全部内容。
  • 如果可以的话,我喜欢解决我自己的问题,问的问题很少。我不明白想知道如何检查编译器设置中的某些内容有什么问题(对于给这个问题一个-1的人)。如果我删除前两句话——不提我遇到的问题——这个问题会变得有效吗?

标签: xcode c++11 clang cocos2d-x-3.0 stdbind


【解决方案1】:

好的,问题不在于参数太多,而在于我为第三个和第四个参数传递了 C 风格的数组。正如我所发现的,C 风格的数组在 C++11 中没有指定的复制行为,这是 std::bind 所需要的。

有趣的是,第 3 个参数总是正确的,而问题只出在第 4 个 - 这就是让我问这个问题的原因。

【讨论】:

  • “指定的复制行为”是什么意思?
  • 将指针传递给后来超出范围或被破坏的数据将始终导致未定义的行为。不幸的是,UB 的可能性之一是它看起来工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多