Named requirements: ProFacade
A type F meets the ProFacade requirements of a type P if F meets the ProBasicFacade requirements, and the following expressions are well-formed and have the specified semantics.
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:
(std::is_pointer_v<T> || requires { typename T::element_type; } || requires(T val) { *val; }) && requires { typename std::pointer_traits<T>::element_type; }
In other words, P either supports dereferencing or provides an element_type, and std::pointer_traits<P> yields a valid element_type.
Notes
Relocatability is defined as move-construct an object and then destroy the original instance. Specifically, the value of F::relocatability maps to the following requirements on P:
