包含对象的初始值设定项列表不可移植

initializer lists with objects is non-portable?

本文关键字:列表 可移植 对象 包含      更新时间:2023-10-16

我正在阅读Mozilla的C++可移植性指南,其中一条建议指出:

不要对对象使用初始值设定项列表

非可移植示例(至少,这曾经是不可移植的,因为 HP-UX!

SubtlePoint myPoint = {300, 400};

在这一点上,这更像是一种风格的东西,但为什么不挥霍并为自己找一个漂亮的构造函数呢?

我对这行"非便携式示例(至少,这曾经是不可移植的,因为 HP-UX!".为什么初始值设定项列表是不可移植的,在什么意义上?它们现在使用安全吗?HP-UX一词指的是什么?

为什么初始值设定项列表是不可移植的,在什么意义上

您引用的指南暗示它们不是/不是便携式的,因为它们在 HP-UX 中不起作用。由于将初始值设定项列表与对象一起使用是由标准明确定义的,这意味着 HP-UX 中使用的编译器不符合它。该指南没有具体说明它在 HP-UX 中是如何中断的。

HP-UX一词指的是什么?

它是一个操作系统。

它们现在使用安全吗?

如果您不需要支持 HP-UX 或其他不符合标准的系统,那么它是并且一直是完全安全的。

"至少,这曾经是不可移植的"可能是由于Mozilla不再正式支持HP-UX上的新版本产品,或者HP-UX上的新版本编译器现在符合要求。这只是我的猜测。