Concepts-related hacks added to import them to std namespace

This commit is contained in:
Mateusz Pusz
2019-05-08 09:05:31 -06:00
parent 4990274281
commit e9d1ae2719
15 changed files with 36 additions and 23 deletions
+3 -3
View File
@@ -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;
+12 -1
View File
@@ -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;
}
+2 -2
View File
@@ -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;