Add MSVC coverage for Constant
and UnitSymbol
#363
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.
Some comments on the vcpkg PR to upgrade Au to 0.4.0 made me suspicious
that we lacked coverage here. I added a test case, and sure enough, it
broke.
What's happening here is that MSVC is being extremely persnickety
about what we pass to a
static_assert
. We are passing a functionparameter, which in the general case might be a runtime value;
hence, inappropriate for
static_assert
.What MSVC doesn't know is that
OtherUnit
is a monovalue type, so itcan only ever have one possible value, and therefore that value is
knowable at compile time. That said, since it is a monovalue type,
that means that it's safe to replace the instance
u
with an ad hocconstruction of the type name,
OtherUnit{}
. This appeases MSVC.Helps #364: we'll go over every other
static_assert
before closing.