在C ++ 11中的函数声明之后,“->”是什么意思?

时间:2018-09-06 11:52:06

标签: c++11

operator()签名后的'-> decltype'语法是什么?

template<>
struct less<void>
{   // transparent functor for operator<
typedef int is_transparent;

template<class _Ty1,
    class _Ty2>
    constexpr auto operator()(_Ty1&& _Left, _Ty2&& _Right) const
    -> decltype(static_cast<_Ty1&&>(_Left)
        < static_cast<_Ty2&&>(_Right))
    {   // transparently apply operator< to operands
    return (static_cast<_Ty1&&>(_Left)
        < static_cast<_Ty2&&>(_Right));
    }
};

这是C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ include \ xstddef行276中的代码。

为什么以下两行重复?

(static_cast<_Ty1&&>(_Left)
        < static_cast<_Ty2&&>(_Right))

1 个答案:

答案 0 :(得分:0)

->decltype(static_cast<_Ty1&&>(_Left)返回static_cast<_Ty1&&>(_Left)的类型,并将其声明为函数的返回类型。

E.G。

auto function(int x ) -> intint function(int x )相同