Conceptually it seems to me that using unit enforcing based types (Meters, Seconds, Kilograms) would have massive benefits (extra checking in passing args, getting rid of unit names in vars, etc) and yet I've not run into as much code which does. And the code that I've seen that does has used custom types.
I see that boost has a units library (boost::units simply enough) and yet, I don't see much evidence of it being widely used (in a basic google search).
Is there a good reason for this?
Together these seem to imply that there must be some reason the practice has not been as widely adopted as I'd expect. Perhaps more trouble than they're worth for some reason?
And so I ask:
Is there a reason not to use unit enforcing types? And specifically is there are reason not to use boost::units?