А call wrapper может иметь weak result type. Если это так, тип его типа члена result_type основан на типе T целевого объекта оболочки:
если T - указатель на тип функции, result_type должен быть синонимом возвращаемого типа T;
если T - указатель на функцию-член, result_type должен быть синонимом возвращаемого типа T;
если T это тип класса, а qualified-id T::result_type действительный и обозначает тип ([temp.deduct]), то result_type должен быть синонимом для T::result_type;
иначе result_type не определяется.