In our codebase, static_assert(std::some_type_trait<Ts...>::value, "msg")
(where some_type_trait is an std type_trait and Ts... is the
appropriate template parameters) account for 11.2% of the static_asserts.
In these cases, the Ts are typically not spelled out explicitly, e.g.
static_assert(std::is_same<SomeT::TypeT, typename SomeDependentT::value_type>::value, "message");
The diagnostic when the assert fails is typically not very useful, e.g.
static_assert failed due to requirement 'std::is_same<SomeT::TypeT, typename SomeDependentT::value_type>::value' "message"
This change makes the diagnostic spell out the types explicitly , e.g.
static_assert failed due to requirement 'std::is_same<int, float>::value' "message"
See tests for more examples.
After this is submitted, I intend to handle
static_assert(!std::some_type_trait<Ts...>::value, "msg"),
which is another 6.6% of static_asserts.
Comment is a bit out of date as this is no longer specific to static_assert.
It looks like this may also change the behavior of enable_if diagnostic reporting. Do you need to update any of those tests from this change? If not, can you devise some tests for that case as well to show that this isn't just a static_assert behavior? (Do a search for findFailedBooleanCondition to find where the behavior has changed.)