forked from mpusz/mp-units
gcc-10 enabled
This commit is contained in:
@@ -26,6 +26,8 @@
|
||||
|
||||
namespace units {
|
||||
|
||||
#if __GNUC__ < 10
|
||||
|
||||
template<typename T>
|
||||
concept Number = std::regular<T> &&
|
||||
std::totally_ordered<T> &&
|
||||
@@ -44,4 +46,28 @@ namespace units {
|
||||
// …
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
template<typename T>
|
||||
concept Number = std::regular<T> &&
|
||||
std::totally_ordered<T> &&
|
||||
requires(T a, T b) {
|
||||
{ a + b } -> std::same_as<T>;
|
||||
{ a - b } -> std::same_as<T>;
|
||||
{ a * b } -> std::same_as<T>;
|
||||
{ a / b } -> std::same_as<T>;
|
||||
{ +a } -> std::same_as<T>;
|
||||
{ -a } -> std::same_as<T>;
|
||||
{ a += b } -> std::same_as<T&>;
|
||||
{ a -= b } -> std::same_as<T&>;
|
||||
{ a *= b } -> std::same_as<T&>;
|
||||
{ a /= b } -> std::same_as<T&>;
|
||||
{ T{0} }; // can construct a T from a zero
|
||||
// …
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// InstanceOf
|
||||
|
||||
} // namespace units
|
||||
|
||||
@@ -31,6 +31,12 @@
|
||||
#define Expects(cond) assert(cond);
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 9
|
||||
#define AUTO auto
|
||||
#else
|
||||
#define AUTO
|
||||
#endif
|
||||
|
||||
namespace std {
|
||||
|
||||
// concepts
|
||||
|
||||
Reference in New Issue
Block a user