【发布时间】:2011-03-02 17:38:21
【问题描述】:
D 与C 轻松交互。
D 与C++ 的接口一样容易,但是(而且它很大)C++ 需要非常微不足道。代码不能使用:
- 命名空间
- 模板
- 多重继承
- 混合使用虚拟和非虚拟方法
- 更多?
我完全理解继承限制。然而,其余的感觉像是人为的限制。现在我不想直接使用std::vector<T>,但我真的希望能够与std::vector<int>作为外部模板链接。
C++ interfacing page 有这个特别令人沮丧的评论。
D 模板与 C++ 模板,而且不太可能 任何一种合理的方法 可以找到表达C++ 以链接兼容的方式模板 与 D.
这意味着 C++ STL 和 C++ 提升,可能永远无法访问 来自D。
诚然,在D 中编码时我可能永远不需要std::vector,但我喜欢使用QT 或boost。
那么有什么关系。为什么在 D 中表达非平凡的C++ 类如此困难?添加一些特殊的注释或至少表达命名空间的东西不值得吗?
更新: 来自Walter Bright 的“D 在工作中支持命名空间”。
【问题讨论】:
-
它甚至不受任何主流 C++ 编译器的支持。您为什么希望其他语言支持它?
-
@Hans,它是什么意思?
-
我认为他的意思是 {mainstream C++ compilers}\X 甚至不支持“链接到编译器 X 生成的 C++”。
-
我的意思是模板,令人沮丧的评论。可导出模板已从 C++0x 标准中删除。在爱迪生的支持下,唯一成功的人。 @Feep 也是对的。
-
@Hans,我不希望导出的模板只是 externed 模板。一个外部模板已经被实例化了,所以我无法更改模板在
D中使用的类型。