Can anyone tell me what kind of template function _Fn() is? And what is the meaning of the -> here?
template <class _Ty0, class _Ty1>
struct _Common_type
{
  template<class _Uty0, class _Uty1>
  static auto _Fn(int) -> decay<decltype(false ? declval<_Uty0>() : declval<_Uty1>())>;
  template<class, class>
  static auto _Fn(_Wrap_int) -> _Nil;
  typedef decltype(_Fn<_Ty0, _Ty1>(0)) type;
};
 
     
    