相关疑难解决方法(0)

如何拥有类似于 unsigned char 的类型,但不允许别名?

我想要一个类型,如下所示unsigned char

\n\n
    \n
  • 大小为 1
  • \n
  • 可以为其分配整数值(无需任何强制转换)
  • \n
  • 允许位操作
  • \n
  • 算术是允许的,但不是必须的
  • \n
  • 未签名
  • \n
  • 可以简单地复制
  • \n
\n\n

但是,与 不同的是unsigned char,它不允许使用别名。我的意思是,一种没有例外的类型[basic.lval/11.8]

\n\n
\n

如果程序尝试通过以下类型之一以外的泛左值访问对象的存储值,则行为未定义:

\n\n

[...]

\n\n
    \n
  • 一个 char,无符号字符或 std\xe2\x80\x8b::\xe2\x80\x8bbyte 类型。
  • \n
\n
\n\n

有可能有这样的类型吗?

\n\n

原因是:我几乎从不使用unsigned char\ 的别名属性。因此,我想使用一种类型,它不会阻止某些类型的优化(注意,我问这个问题是因为我实际上有一些函数,由于允许别名,因此没有很好地优化)的财产unsigned char)。因此,我希望有一种类型能够满足这一点:“不要为不使用的东西付费”。

\n\n
\n\n

这是一个unsigned char阻止优化的示例:使用此指针会导致热循环中奇怪的去优化

\n

c++ c++17

5
推荐指数
1
解决办法
433
查看次数

标签 统计

c++ ×1

c++17 ×1