从概念上讲,在我看来,使用基于单位执行的类型(Meters,Seconds,Kilograms)会有很大的好处(额外检查传递args,删除vars中的单位名称,等)但我没有碰到那么多的代码。我见过的代码确实使用了自定义类型。
我看到boost有一个单元库(boost :: units就够了)然而,我没有看到很多证据表明它被广泛使用(在一个基本的谷歌搜索中) )
这有充分的理由吗?
这些似乎意味着必须有某种原因这种做法没有像我期望的那样被广泛采用。也许比出于某种原因值得更麻烦?
所以我问:
有没有理由不使用单位强制类型?特别是有理由不使用boost :: units?
答案 0 :(得分:6)
我认为这种技术不太普遍的主要原因是拼出和阅读起来非常困难和麻烦。
希望这最终会成为C ++ 11更受欢迎的编程风格,它将用户定义的文字添加到允许您编写的语言中:
auto acc = 10_m / 1_s / 1_s;
而不是传统的
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);