这种模板函数如何称呼?

时间:2019-06-05 11:12:11

标签: c++

谁能告诉我_Fn()是什么模板功能? ->在这里是什么意思?

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;
};

1 个答案:

答案 0 :(得分:2)

考虑此功能:

void foo()
{}

我们也可以这样写:

auto foo() -> void
{}

这是返回返回类型introduced in C++11

在上面的示例中,它毫无意义,但in more complicated scenarios it's useful。成像您的返回类型不是void,而是与参数(e.g. decltype(someArgument))有关的东西。某些人一直在使用此表单来表示“ {consistency”(即使在main上也是如此!Ew!)

现在完全遵循此逻辑,执行更复杂的函数模板声明,这就是您所看到的。

的确,在我看来,这就是您的代码作者所做的,因为在您的示例中它似乎不是“必需的”。 < / p>