gpt4 book ai didi

c++ - 哪些 C++(98/03) 特性没有得到糟糕的编译器的很好支持?

转载 作者:可可西里 更新时间:2023-11-01 16:30:00 26 4
gpt4 key购买 nike

我经常读到一些软件删除了一些 C++ 功能,以便与糟糕的/旧的/奇特的 C++ 编译器兼容。

This one只是我进入的最后一个:Box2D 没有使用命名空间,因为它们需要支持:

poor C++ compilers where namespace support can be spotty

我能想到的一个更大的例子是 Qt,它依赖于 MOC,大量限制模板的使用并避免使用模板(好吧,这至少对于 Qt3 和以前的版本是正确的,Qt4 主要这样做是为了保持遵守他们的惯例)。


我想知道什么编译器这么差?
lots of C++ compilers在那里(我从未听说过其中的大多数),但我希望它们都支持最常见的(/简单的?)C++ 功能,如 namespace (除非它们已经死了);不是这样吗?

最不受支持的功能是什么?
我可以很容易地预料到缺少外部模板,可能是模板部分特化和类似的功能。最多甚至是 RTTI 或异常,但我绝不会怀疑命名空间。

最佳答案

根据我的经验,人们只是害怕新事物,尤其是 20 年前曾经出现过的事物。没有正当理由反对在本世纪编写的任何内容中使用命名空间。

如果您正在寻找可以抛弃的东西,如果您不久前碰巧以 Windows 为目标,那么您必须做的不仅仅是抛弃 C++ 中的功能而不使用它们,您必须使用不同的语法。模板是 VC 中支持最差的功能之一。他们变得更好了,但有时仍然会失败。

该特定编译器(仍然!)不支持的另一个方法是重载虚函数以返回派生类型指针,这些指针指向使用 MI 时返回的基本版本的类型。 VC 简直吓坏了,你最终不得不执行 virtual_xxx() 并提供非虚拟的“xxx()”函数来复制标准行为。

关于c++ - 哪些 C++(98/03) 特性没有得到糟糕的编译器的很好支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com