我正在寻找一种方法来对不同的测量单位进行更好的类型检查。boost::units 文档以“Boost.Units 库是以通用且可扩展的方式进行维度分析的 C++ 实现......”开头。文档继续说,“......没有引入运行时执行成本......”。
我对在维度分析之外使用升压单元很感兴趣。例如,一个函数参数需要boost::units::degrees
而不是简单的double
.
using AngleDegree = boost::units::quantity<boost::units::unit<boost::units::plane_angle_dimension, boost::units::degree::system>>;
using AngleRadian = boost::units::quantity<boost::units::unit<boost::units::plane_angle_dimension, boost::units::si::system>>;
void foo(AngleDegree angle_deg) {...}
void bar(AngleRadian angle_rad) {...}
我不应该这样做有什么根本原因吗?我在文档中没有找到任何说明我应该或不应该以这种方式使用 boost::units 的内容。