Use std::common_type_t to compare variables using common type #1494
+55
−161
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.
Use
std::common_type_tto simplify the comparison of different variable types. If a common type exists for which both operands can be explicitly converted to, then you convert them to this common type and perform the comparison on this common type.std::common_type_t<std::bitset<N>::reference, bool>=boolandstd::common_type_t<std::vector<bool>::reference, bool>=bool.std::common_type<T1, T2>is the only<type_traits>class which can have user-defined specializations, as long as at leastT1orT2is a user-defined type, but I did not need to define a specialization.Use the same
cmp()function which usesstd::common_type_tfor both variable change-detection as well as regular comparisons.