Modernize relational operators for shared_ptr and unique_ptr.  This includes adding support for nullptr, and using less<T*>.  Fixes http://llvm.org/bugs/show_bug.cgi?id=12056.

llvm-svn: 151084
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 67f396476609d1eeb10b565f22f02eaa2fc172ea
diff --git a/include/functional b/include/functional
index ee0424d..8f912fb 100644
--- a/include/functional
+++ b/include/functional
@@ -536,12 +536,7 @@
         {return __x > __y;}
 };
 
-template <class _Tp>
-struct _LIBCPP_VISIBLE less : binary_function<_Tp, _Tp, bool>
-{
-    _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
-        {return __x < __y;}
-};
+// less in <__functional_base>
 
 template <class _Tp>
 struct _LIBCPP_VISIBLE greater_equal : binary_function<_Tp, _Tp, bool>