@@ -27,8 +27,7 @@ namespace mem {
2727
2828namespace detail {
2929
30- template <typename T>
31- IPC_CONCEPT_ (is_comparable, require<const T>([](auto && t)->decltype (t < t) {}));
30+ IPC_CONCEPT_ (is_comparable, operator <(std::declval<Type>()));
3231
3332} // namespace detail
3433
@@ -72,10 +71,8 @@ class limited_recycler<AllocP, true> {
7271template <typename AllocP>
7372class default_recycler : public limited_recycler <AllocP> {
7473
75- template <typename T>
76- IPC_CONCEPT_ (has_remain, require<const T>([](auto && t)->decltype (t.remain()) {}));
77- template <typename T>
78- IPC_CONCEPT_ (has_empty, require<const T>([](auto && t)->decltype (t.empty()) {}));
74+ IPC_CONCEPT_ (has_remain, remain());
75+ IPC_CONCEPT_ (has_empty , empty());
7976
8077 template <typename A>
8178 void try_fill (A & alc) {
@@ -89,28 +86,28 @@ class default_recycler : public limited_recycler<AllocP> {
8986
9087 template <typename A = AllocP>
9188 auto try_replenish (alloc_policy & alc, std::size_t size)
92- -> std::enable_if_t <detail::has_take<A>::value && has_remain<A>::value> {
89+ -> ipc::require <detail::has_take<A>::value && has_remain<A>::value> {
9390 if (alc.remain () >= size) return ;
9491 this ->try_fill (alc);
9592 }
9693
9794 template <typename A = AllocP>
9895 auto try_replenish (alloc_policy & alc, std::size_t /* size*/ )
99- -> std::enable_if_t <detail::has_take<A>::value && !has_remain<A>::value && has_empty<A>::value> {
96+ -> ipc::require <detail::has_take<A>::value && !has_remain<A>::value && has_empty<A>::value> {
10097 if (!alc.empty ()) return ;
10198 this ->try_fill (alc);
10299 }
103100
104101 template <typename A = AllocP>
105102 auto try_replenish (alloc_policy & alc, std::size_t /* size*/ )
106- -> std::enable_if_t <!detail::has_take<A>::value && has_empty<A>::value> {
103+ -> ipc::require <!detail::has_take<A>::value && has_empty<A>::value> {
107104 if (!alc.empty ()) return ;
108105 this ->try_recover (alc);
109106 }
110107
111108 template <typename A = AllocP>
112109 IPC_CONSTEXPR_ auto try_replenish (alloc_policy & /* alc*/ , std::size_t /* size*/ ) noexcept
113- -> std::enable_if_t <(!detail::has_take<A>::value || !has_remain<A>::value) && !has_empty<A>::value> {
110+ -> ipc::require <(!detail::has_take<A>::value || !has_remain<A>::value) && !has_empty<A>::value> {
114111 // Do Nothing.
115112 }
116113};
0 commit comments