像Hiphop for PHP这样的工具如何处理异构数组?

我认为HipHop for PHP是一个有趣的工具。它本质上将PHP代码转换为C ++代码。以这种方式进行交叉编译似乎是一个好主意,但我不得不怀疑,它们如何克服两种类型系统之间的根本区别?我的一般问题的一个具体示例是异构数据结构。静态类型语言不会让您将任意类型放入数组或其他容器中,因为它们需要能够在另一端找出类型。如果我有这样的PHP数组:
$mixedBag = array("cat", 42, 8.5, false);
如何用C ++代码表示?一种选择是使用void指针(或高级版本,boost :: any),但是当你把数据从数组中取出时你需要进行转换...而且我完全不相信类型推理器总能找出在另一端施放的东西。或许,一个更好的选择可能更像是union(或boost :: variant),但是你需要在编译时枚举所有可能的类型......也许是可能的,但肯定是凌乱的,因为数组可以包含任意复杂的实体。 有谁知道HipHop和从动态类型学科到静态学科的类似工具如何处理这些类型的问题?     
已邀请:
它们具有泛型变量类型,可以包含任何PHP值,并且这些代码在从PHP编译时可能会使用这些类型。这意味着代表PHP值的优势部分会因为C ++类型而丢失,但我们认为这样的代码很少见。 PHP没有太多的类型,因此将结果整合在一起并不是一个问题 - 这就是PHP,Zend Engine背后的实际引擎。     

要回复问题请先登录注册