gpt4 book ai didi

c++ - 限制使用的 C++ 计算类型

转载 作者:行者123 更新时间:2023-11-30 03:08:17 26 4
gpt4 key购买 nike

我希望有一种方法来定义计算类型(例如,类似于“有限 int”的东西),这些计算类型不会自动转换为它们的基本类型或相互转换——行为类似于类型化指针。

例如,我希望能够定义用于 X 和 Y 坐标的 XCoordYCoord 类型。当然,我可以使用 typedef 来做到这一点,它使我的代码更加明确,但我真正想要的是当我不小心将 Y 坐标作为函数调用参数传递时编译器会提示应该使用 X 坐标。另一个用例是将尺寸单位与数字相关联,以便在有人不小心将以米为单位的高度数字添加到以克为单位的重量时收到投诉。

是的,我知道,这个例子很简单,掩盖了许多问题。我想指定数值。我想遍历值的范围。我想减去两个 XCoord 值(并得到一个 int?)。我想将它们用作数组下标。我确信有一大堆用法我没有详细考虑过——虽然让它们全部透明地工作会很好,但我不反对一些语法上的不便(比如成员函数调用)在某些用法中。

我几乎可以看到如何通过模板和运算符重载来组合解决方案,并且可能会得到我想要的大部分内容。不过,我希望有一个解决方案,其创建者已经完成了艰苦的工作并探索了极端情况,并在便利性和功能之间做出了适当的妥协。

当然,它们只是添加了编译时检查的基本类型——因此该解决方案相对于基本类型的运行时性能损失应该为零,就像 typedef

有这样的东西吗?使用语言结构的解决方案是否是如此复杂且充满惊喜,以至于我最好还是使用普通的旧 typedefs 和类似 lint 的工具?如果有,是否有这样的工具?

最佳答案

我相信boost . serializationBOOST_STRONG_TYPEDEF应该符合您的要求。

关于c++ - 限制使用的 C++ 计算类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5150460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com