std::__result_of_memobj_deref_impl 可以看到,整个实现有两层判断(有两个判断是类似的,可以看作是一层),其中第一个层位于std::__result_of_impl,用来判断不同的调用方法,大致分为三种: 对象方法,比如以下代码中的struct A的invoke_mem_fun,调用方法为obj.fun(args...)。
int invoke_mem_obj;};其他,⽐如以下代码中的invoke_other,其调⽤⽅法为fun(args...),这⼀部分包括了函数对象和普通函数。int invoke_other();那么std::__result_of_impl是如何区分出了这三种不同的调⽤⽅式呢?libstdc++中实现了两个类型判断,is_member_object_pointer和is_member_function_...