有没有理由不使用单位执行类型?

Cat*_*kul 6 c++ boost types units-of-measurement boost-units

从概念上讲,在我看来,使用基于单位强制执行的类型(Meters,Seconds,Kilograms)会有很大的好处(额外检查传递args,摆脱变量中的单位名称等)但我没有遇到过多少代码哪个.我见过的代码确实使用了自定义类型.

我看到boost有一个单元库(boost :: units就够了)然而,我没有看到它被广泛使用的广泛使用的证据(在基本的谷歌搜索中).

有这么好的理由吗?

这些似乎意味着必须有某种原因这种做法没有像我期望的那样被广泛采用.也许比某些原因值得更麻烦?

所以我问:

有没有理由不使用单位执行类型?特别是有理由不使用boost :: units吗?

Ker*_* SB 6

我认为这种技术不是更普遍的主要原因是拼出和阅读是非常困难和麻烦的.

希望这最终会成为C++ 11更受欢迎的编程风格,它将用户定义的文字添加到允许您编写的语言中:

auto acc = 10_m / 1_s / 1_s;
Run Code Online (Sandbox Code Playgroud)

而不是传统的

myframework::units::si<acceleration>::type acc = myframework::unit_cast<units::meters>(10.0)
   / myframework::unit_cast<units::seconds>(1)
   / myframework::unit_cast<units::seconds>(1);
Run Code Online (Sandbox Code Playgroud)