【发布时间】:2019-08-29 07:05:01
【问题描述】:
似乎以下内容可以保证通过(已经问过here):
#include <type_traits>
static_assert(!std::is_same_v<char, signed char>);
static_assert(!std::is_same_v<char, unsigned char>);
[
char] 与signed char或unsigned char具有相同的表示和对齐方式,但始终是不同的类型
是否也保证int8_t 和uint8_t 是根据显式签名类型定义的 不是根据char 定义的,因此也用char形成一组3种不同的类型?
#include <cstdint>
#include <type_traits>
static_assert(!std::is_same_v<char, int8_t>);
static_assert(!std::is_same_v<char, uint8_t>);
【问题讨论】:
-
我不希望标准指定几乎不相关的东西,这会让我觉得过度指定。 (而且我不知何故看不到 int8/uint8 与 char 的关系,除了 char 很可能也由 8 位表示并且您可以在它们之间安全地转换,但在我看来,这些都与使类型相同/非相关标准相同。
标签: c++ char language-lawyer cstdint