谁能告诉我_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;
};
答案 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>