1

这听起来可能很奇怪,但我正在考虑模块提案,并想知道是否有可能例如将来 Haskell 代码可以以 C++ 可以使用的方式公开(作为模块)(让我们说 Haskell 映射中的 T 列表到vector<T>)。那么与当前状态(C++11)相比,模块是否使这变得容易、可能,或者没有改变?

4

1 回答 1

2

这是可能的,但我怀疑它会让事情变得更容易。我的理解是,从模块导出的信息的二进制格式将是特定于编译器的,因此它不会提供平台上所有编译器共享的通用 ABI。使用 C 作为语言之间的粘合剂的原因是大多数平台上的 C ABI 非常简单并且是固定的,因此它不是一个移动的目标。C++ 实现需要更丰富的 ABI(名称修饰格式、异常层次结构、对象布局、vtable 布局、RTTI 表示等),模块不会改变这一点。

于 2012-12-21T13:38:34.903 回答