Addresses https://trac.macports.org/ticket/72983
Patch taken from https://github.com/PDAL/PDAL/tree/issue-4817

--- pdal/PointView.cpp.orig
+++ pdal/PointView.cpp
@@ -81,8 +81,7 @@ PointId PointView::addPoint()
     return tableId;
 }
 
-template<typename Sorter>
-void PointView::basic_sort(Sorter sort, Compare comp)
+void PointView::basic_sort(SortFunc sort, Compare comp)
 {
     std::vector<PointId> order(size());
 
@@ -102,12 +101,12 @@ void PointView::sort(Dimension::Id dim)
     {
         return compare(dim, id1, id2);
     };
-    basic_sort(std::sort<std::vector<PointId>::iterator, PointView::Compare>, comp);
+    basic_sort(static_cast<SortFunc>(&std::sort), comp);
 }
 
 void PointView::sort(Compare comp)
 {
-    basic_sort(std::sort<std::vector<PointId>::iterator, PointView::Compare>, comp);
+    basic_sort(static_cast<SortFunc>(&std::sort), comp);
 }
 
 void PointView::stableSort(Dimension::Id dim)
@@ -116,12 +115,12 @@ void PointView::stableSort(Dimension::Id dim)
     {
         return compare(dim, id1, id2);
     };
-    basic_sort(std::stable_sort<std::vector<PointId>::iterator, PointView::Compare>, comp);
+    basic_sort(static_cast<SortFunc>(&std::stable_sort), comp);
 }
 
 void PointView::stableSort(Compare comp)
 {
-    basic_sort(std::stable_sort<std::vector<PointId>::iterator, PointView::Compare>, comp);
+    basic_sort(static_cast<SortFunc>(&std::stable_sort), comp);
 }
 
 void PointView::calculateBounds(BOX2D& output) const

--- pdal/PointView.hpp.orig
+++ pdal/PointView.hpp
@@ -262,6 +262,11 @@ public:
     void calculateBounds(BOX3D& box) const;
 
     using Compare = std::function<bool(PointId id1, PointId id2)>;
+    // This is necessary due to a bug in older OSX compilers.
+    using SortFunc = void (*)(std::vector<PointId>::iterator,
+                              std::vector<PointId>::iterator,
+                              Compare);
+
     void sort(Dimension::Id id);
     void sort(Compare comp);
     void stableSort(Dimension::Id id);
@@ -416,8 +421,7 @@ private:
     PointId index(PointId id) const
         { return m_index[id]; }
 
-    template<typename Sorter>
-    void basic_sort(Sorter sort, Compare comp);
+    void basic_sort(SortFunc sort, Compare comp);
 };
 
 struct PointViewLess
