cpp/ranges/range adaptor closure

is a helper class template for defining a.

Let be the object of type, the implementation ensures that  is a range adaptor closure object if all the requirements are met:
 * is a unary function object that takes one argument.
 * has exactly one public base class, and has no base classes of type  for any other type.
 * does not satisfy.