wimalopaan Asked: 2023-08-17 17:13:58 +0800 CST2023-08-17 17:13:58 +0800 CST 2023-08-17 17:13:58 +0800 CST C++17 中 std::byte 只能按位运算? 772 CPP 参考文献中指出: std::byte是一种独特的类型,它实现了 C++ 语言定义中指定的字节概念。 与 char 和 unsigned char 一样,它可用于访问其他对象(对象表示)占用的原始内存,但与这些类型不同的是,它不是字符类型,也不是算术类型。字节只是位的集合,并且只为其定义了按位运算符。 但这不是真的:因为它是枚举类型,所以比较操作(<, <=, >, >=, ==, !=)也是可能的。 这是故意的吗,例如std::byte也用作 等的密钥std::map? c++ 1 个回答 Voted Best Answer Jan Schultke 2023-08-17T17:45:32+08:002023-08-17T17:45:32+08:00 std::byte是的,比较运算符是有意为之的。该提案是std::byte这样说的: 类似地,std::byte可以进行比较,因为比较和排序实例是明智且有用的操作。给定其基础存储类型,比较运算符将给出与在基础类型上执行相同的结果。 - P0298r3 字节类型定义 正如您所指出的,这允许用作std::byte容器中的键。它还允许在需要相等或小于比较的情况下使用、、等std::byte算法。std::partitionstd::sortstd::unique 请注意, C++ 标准中的通用定义库部分并没有过多介绍std::byte. 这并不是说它不具有可比性。 请记住,cppreference 不是规范性的,任何人都可以编辑*而无需开设帐户。有许多部分不完整,维基百科中经常出现错误。最有可能的是,作者忘记了std::byte还有比较运算符。 *事实上,我刚刚自己编辑了该页面,现在显示: 字节只是位的集合,并且只为其定义了按位运算符和比较运算符。
std::byte
是的,比较运算符是有意为之的。该提案是std::byte
这样说的:- P0298r3 字节类型定义
正如您所指出的,这允许用作
std::byte
容器中的键。它还允许在需要相等或小于比较的情况下使用、、等std::byte
算法。std::partition
std::sort
std::unique
请注意, C++ 标准中的通用定义库部分并没有过多介绍
std::byte
. 这并不是说它不具有可比性。请记住,cppreference 不是规范性的,任何人都可以编辑*而无需开设帐户。有许多部分不完整,维基百科中经常出现错误。最有可能的是,作者忘记了
std::byte
还有比较运算符。*事实上,我刚刚自己编辑了该页面,现在显示: