Refs #100 and partially replaces #114. Instead of counting the number of convertible alternatives before picking a convertible type, it does the check inside covertible_type -- after finding the first one that is_convertible, all remaining types must be non-convertible. That can easily be checked with std::disjunction.
Then I found another use for std::disjunction in the static_assert that forbids references, and replaced that as well, removing static_none_of (and also static_all_of which was unused).
Refs #100 and partially replaces #114. Instead of counting the number of convertible alternatives before picking a convertible type, it does the check inside
covertible_type
-- after finding the first one thatis_convertible
, all remaining types must be non-convertible. That can easily be checked with std::disjunction.Then I found another use for
std::disjunction
in thestatic_assert
that forbids references, and replaced that as well, removingstatic_none_of
(and alsostatic_all_of
which was unused).