A call wrapper may have a weak result type. If it does, the type of its member type result_Βtype is based on the type T of the wrapper's target object:
if T is a pointer to function type, result_Βtype shall be a synonym for the return type of T;
if T is a pointer to member function, result_Βtype shall be a synonym for the return type of T;
if T is a class type and the qualified-id Tβ::βresult_Βtype is valid and denotes a type ([temp.deduct]), then result_Βtype shall be a synonym for Tβ::βresult_Βtype;
otherwise result_Βtype shall not be defined.