diff --git a/lld/include/lld/Core/File.h b/lld/include/lld/Core/File.h
index 20418688dfa0..d4e420327dcc 100644
--- a/lld/include/lld/Core/File.h
+++ b/lld/include/lld/Core/File.h
@@ -114,10 +114,8 @@ public:
     AtomRange(AtomVector<T> &v) : _v(v) {}
     AtomRange(const AtomVector<T> &v) : _v(const_cast<AtomVector<T> &>(v)) {}
 
-    typedef std::pointer_to_unary_function<const OwningAtomPtr<T>&,
-                                           const T*> ConstDerefFn;
-
-    typedef std::pointer_to_unary_function<OwningAtomPtr<T>&, T*> DerefFn;
+    using ConstDerefFn = const T* (*)(const OwningAtomPtr<T>&);
+    using DerefFn = T* (*)(OwningAtomPtr<T>&);
 
     typedef llvm::mapped_iterator<typename AtomVector<T>::const_iterator,
                                   ConstDerefFn> ConstItTy;