Number concept extended with requirements on comparison operators

This commit is contained in:
Mateusz Pusz
2019-04-05 17:49:32 +02:00
parent f94a7b92ea
commit e0aa10e133

View File

@@ -39,18 +39,20 @@ namespace std {
namespace units { namespace units {
template<typename T> template<typename T>
concept bool Number = requires(T a, T b) { concept bool Number = std::experimental::ranges::Regular<T> &&
{ a + b } -> T; std::experimental::ranges::StrictTotallyOrdered<T> &&
{ a - b } -> T; requires(T a, T b) {
{ a * b } -> T; { a + b } -> T;
{ a / b } -> T; { a - b } -> T;
{ -a } -> T; { a * b } -> T;
{ a += b } -> T&; { a / b } -> T;
{ a -= b } -> T&; { -a } -> T;
{ a *= b } -> T&; { a += b } -> T&;
{ a /= b } -> T&; { a -= b } -> T&;
{ T{0} };// can construct a T from a zero { a *= b } -> T&;
// … { a /= b } -> T&;
{ T{0} };// can construct a T from a zero
// …
} ; } ;