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 -void PointView::basic_sort(Sorter sort, Compare comp) +void PointView::basic_sort(SortFunc sort, Compare comp) { std::vector order(size()); @@ -102,12 +101,12 @@ void PointView::sort(Dimension::Id dim) { return compare(dim, id1, id2); }; - basic_sort(std::sort::iterator, PointView::Compare>, comp); + basic_sort(static_cast(&std::sort), comp); } void PointView::sort(Compare comp) { - basic_sort(std::sort::iterator, PointView::Compare>, comp); + basic_sort(static_cast(&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::iterator, PointView::Compare>, comp); + basic_sort(static_cast(&std::stable_sort), comp); } void PointView::stableSort(Compare comp) { - basic_sort(std::stable_sort::iterator, PointView::Compare>, comp); + basic_sort(static_cast(&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; + // This is necessary due to a bug in older OSX compilers. + using SortFunc = void (*)(std::vector::iterator, + std::vector::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 - void basic_sort(Sorter sort, Compare comp); + void basic_sort(SortFunc sort, Compare comp); }; struct PointViewLess