forked from mpusz/mp-units
Concepts-related hacks added to import them to std namespace
This commit is contained in:
@@ -22,13 +22,13 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <experimental/ranges/concepts>
|
||||
#include <units/bits/hacks.h>
|
||||
|
||||
namespace units {
|
||||
|
||||
template<typename T>
|
||||
concept bool Number = std::experimental::ranges::Regular<T> &&
|
||||
std::experimental::ranges::StrictTotallyOrdered<T> &&
|
||||
concept bool Number = std::Regular<T> &&
|
||||
std::StrictTotallyOrdered<T> &&
|
||||
requires(T a, T b) {
|
||||
{ a + b } -> T;
|
||||
{ a - b } -> T;
|
||||
|
||||
@@ -22,12 +22,23 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <experimental/ranges/concepts>
|
||||
|
||||
namespace std {
|
||||
|
||||
// type_identity
|
||||
template<typename T>
|
||||
struct type_identity { using type = T; };
|
||||
|
||||
template<typename T>
|
||||
using type_identity_t = typename type_identity<T>::type;
|
||||
|
||||
}
|
||||
// concepts
|
||||
using experimental::ranges::Same;
|
||||
using experimental::ranges::Integral;
|
||||
using experimental::ranges::DerivedFrom;
|
||||
using experimental::ranges::Regular;
|
||||
using experimental::ranges::StrictTotallyOrdered;
|
||||
using experimental::ranges::ConvertibleTo;
|
||||
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <units/bits/hacks.h>
|
||||
#include <experimental/ranges/concepts>
|
||||
#include <type_traits>
|
||||
|
||||
namespace units {
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace units {
|
||||
requires {
|
||||
typename T::base_type;
|
||||
} &&
|
||||
std::experimental::ranges::DerivedFrom<T, upcast_base<typename T::base_type>>;
|
||||
std::DerivedFrom<T, upcast_base<typename T::base_type>>;
|
||||
|
||||
template<Upcastable T>
|
||||
using upcast_from = typename T::base_type;
|
||||
|
||||
Reference in New Issue
Block a user