Tie up loose ends in negative mag implementation #407
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Our interop with the chrono library should not support negative
magnitudes, so we add a
static_assert.Constants should be negatable, and double-negatives should completely
cancel out. We achieve this by adding support for negation at the "unit
wrapper" level, for any wrapper that can be scaled by a magnitude.
If we simply negate a unit (or constant), the scale factor should simply
be a
-sign: we don't want to print a scale factor of-1.Finally, we punt on the runtime conversion checkers: they are only
supported for positive units. There's no sense in putting effort into
an implementation that will be obviated by #387 and #349.
Helps #370.