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
diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base
index ed7d21b..63aa41d 100644
--- a/libcxx/include/__functional_base
+++ b/libcxx/include/__functional_base
@@ -50,6 +50,13 @@
     static const bool value = sizeof(__test<_Tp>(0)) == 1;
 };
 
+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;}
+};
+
 #ifdef _LIBCPP_HAS_NO_VARIADICS
 
 #include <__functional_base_03>