Skip to content

Commit a3d9bd8

Browse files
committed
Resolve comments
1 parent 58b115a commit a3d9bd8

2 files changed

Lines changed: 3 additions & 4 deletions

File tree

docs/spec/ProFacade.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ A type `F` meets the *ProFacade* requirements of a type `P` if `F` meets the [*P
1515
*Since 4.0.2*: `P` shall be a pointer-like type eligible for `proxy`. A type `P` is eligible if the following condition is satisfied:
1616

1717
```cpp
18-
(requires { *std::declval<P&>(); } || requires { typename P::element_type; }) &&
19-
requires { typename std::pointer_traits<P>::element_type; }
18+
(std::is_pointer_v<T> || requires { typename T::element_type; } || requires(T val) { *val; }) && requires { typename std::pointer_traits<T>::element_type; }
2019
```
2120
2221
In other words, `P` either supports dereferencing or provides an `element_type`, and `std::pointer_traits<P>` yields a valid `element_type`.

include/proxy/v4/proxy.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,8 @@ template <class R, class F, bool IsDirect>
636636
using refl_accessor_t = typename refl_accessor_traits<R, F, IsDirect>::type;
637637

638638
template <class T>
639-
concept pointer_like = (requires { *std::declval<T&>(); } ||
640-
requires { typename T::element_type; }) &&
639+
concept pointer_like = (std::is_pointer_v<T> ||
640+
requires { typename T::element_type; } || requires(T val) { *val; }) &&
641641
requires { typename std::pointer_traits<T>::element_type; };
642642

643643
template <class T, template <class...> class TT>

0 commit comments

Comments
 (0)