cpp/experimental/ranges/functional/invoke

Invoke the object  with the parameters, and return the result, as if by , where INVOKE(f, t1, t2, ..., tN) is defined as follows:
 * if is a pointer to member function of class :
 * If is, then  is equivalent to
 * otherwise, is equivalent to.


 * otherwise, if N == 1 and is a pointer to data member of class :
 * If is, then  is equivalent to
 * otherwise, then is equivalent to


 * otherwise, is equivalent to  (that is,  is a )