【发布时间】:2019-02-23 08:05:37
【问题描述】:
有没有办法编写类型特征来确定类型是否支持 C++ 中的负零(包括整数表示,例如 sign-and-magnitude)?我没有看到任何直接这样做的东西,而且std::signbit 似乎不是constexpr。
澄清一下:我问是因为我想知道这是否可能,无论用例可能是什么,如果有的话。
【问题讨论】:
-
像往常一样,我更感兴趣的是为什么你需要这个?您需要解决的真正和原始问题是什么?除非这只是单纯的好奇(在这种情况下你应该提到它),否则请直接询问你真正的问题。现在你的问题更像是XY problem。
-
您应该知道,非 2s 补码有符号整数选项很可能从 C++ 中消失。有关详细信息,请参阅open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0907r0.html(其中还引用了 C 中的类似努力)。
-
@paxdiablo - 坦率地说,我希望不会。如果技术以一种使非 2 补码整数类型有用的方式发展,那么 C 和 C++ 标准将明确禁止使用它们(或者规范将不得不重新引入使用它们的能力)。说当前的实现以特定的方式工作是一回事。编译器供应商或程序员应该在他们的开发中假设它是另一回事。出于各种原因,硬件设计确实会给软件开发人员带来惊喜。
-
@Someprogrammerdude - 我很好奇你认为 X 在这种情况下可能是什么让你认为这是一个 XY 问题。
-
@Someprogrammerdude - 我知道什么是 XY 问题,在您发表评论之前我已经遇到过这个术语,无论如何我都能够关注链接和阅读。问题如前所述,我想知道这是否可能。这不是 XY 问题,我不知道你为什么会得出这个结论。
标签: c++ types typetraits signed negative-zero