UnitRep extended

This commit is contained in:
Mateusz Pusz
2019-11-06 21:51:40 +00:00
parent 37ca5f7102
commit 9871cf0ed7

View File

@ -53,13 +53,21 @@ namespace units {
// UnitRep // UnitRep
template<typename T> template<typename T>
concept UnitRep = Scalar<T> && concept UnitRep = Scalar<T> &&
(treat_as_floating_point<T> == false || // integral
((treat_as_floating_point<T> == false &&
requires(T a, T b) {
{ a % b } -> T;
{ a++ } -> T;
{ ++a } -> T&;
{ a-- } -> T;
{ --a } -> T&;
}) ||
// floating-point
requires(T&& a) { requires(T&& a) {
{ ::units::isfinite(std::forward<T>(a)) } -> bool; ::units::isfinite(std::forward<T>(a));
{ ::units::isnan(std::forward<T>(a)) } -> bool; ::units::isnan(std::forward<T>(a));
}); });
template<Unit U, UnitRep Rep> template<Unit U, UnitRep Rep>
class quantity; class quantity;