Concept proxiable
Header:
proxy.h
Module:proxy
Namespace:pro::inline v4
template <class P, class F> concept proxiable = /* see-below */; The concept proxiable<P, F> specifies that proxy<F> can potentially contain a value of type P. If P is an incomplete type, the behavior of evaluating proxiable<P, F> is undefined. proxiable<P, F> is true when F meets the ProFacade requirements of P; otherwise, it is false.
Example
#include <string> #include <vector> #include <proxy/proxy.h> PRO_DEF_FREE_DISPATCH(FreeToString, std::to_string, ToString); struct Stringable : pro::facade_builder // ::add_convention<FreeToString, std::string()> // ::build {}; int main() { static_assert(pro::proxiable<int*, Stringable>); static_assert(pro::proxiable<std::shared_ptr<double>, Stringable>); static_assert(!pro::proxiable<std::vector<int>*, Stringable>); }