Add trailing return types (and noexcept specifications) to the 'diamond operators'. Fixes PR#22600.

llvm-svn: 230484
diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base
index e174e0c..09424bc 100644
--- a/libcxx/include/__functional_base
+++ b/libcxx/include/__functional_base
@@ -70,7 +70,9 @@
     template <class _T1, class _T2> 
     _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
     auto operator()(_T1&& __t, _T2&& __u) const
-        { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); }
+    _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)))
+    -> decltype        (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))
+        { return        _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); }
     typedef void is_transparent;
 };
 #endif