C++20 和浮点字节顺序

Por*_*ton 5 c++ floating-point endianness c++20

短的:

  • c++20 endian 提案仅处理整数类型,还是还提供有关浮点类型的信息?
  • 它会添加有用的标准库函数来处理字节序吗?

跨平台正确处理序列化是很困难的,而浮点数字节顺序的奇怪可能性更令人沮丧(诅咒那些认为 ARM 中字节浮点数是个好主意的人)。不幸的是,我在网上找到的讨论 c++20 功能的文章提到了整数类型,但没有提到浮点数。

标准委员会是否忽略了 float 和 double 类型?
请告诉我不。

另外,我能找到的文章似乎表明添加的内容只会提供一种检测字节顺序的方法,但不会提供用于在不同编码之间进行转换的标准库函数。如果是这样的话,这似乎并不比标准化预处理器定义更有用。

了解即将推出的 c++20 提案的人能否列出新的字节序功能中包含(和不包含)哪些内容?(......如果你碰巧知道“为什么”那就太棒了)

Ted*_*gmo 2

c++20 endian 提案仅处理整数类型,还是还提供有关浮点类型的信息?

就目前情况而言,它会告诉您所有标量类型是否都是大尾数或小尾数 - 或者,可怕的是,它们不是,而您正在处理混合尾数。

所有算术类型都包含在标量中,包括整数和浮点类型。

原因:纯粹是猜测,但在看到无数 C 类型双关语版本移植到 C++ 后进行可移植测试将是原因之一。

另外,我能找到的文章似乎表明添加的内容只会提供一种检测字节顺序的方法,但不会提供用于在不同编码之间进行转换的标准库函数。如果是这样的话,这似乎并不比标准化预处理器定义更有用。

您只能获得一种可移植的方法来检测字节顺序。

  • @PorkWonton你会得到一个混合的结果,因为我在这里做了一个例子:/sf/answers/3745242021/ (2认同)