Fix build with libcxx 16.0.6

Index: src/gm_utils.h
--- src/gm_utils.h.orig
+++ src/gm_utils.h
@@ -117,7 +117,7 @@ bool string_contains(const char *s, const char *tofind
  * Function object to print something into a stream (to be used with for_each)
  */
 template<class T>
-struct print_f : public std::unary_function<T, void>
+struct print_f
 {
     print_f(std::ostream& out, const string &s = ", ") : os(out), sep(s) {}
     void operator() (T x) { os << x << sep; }
@@ -129,7 +129,7 @@ struct print_f : public std::unary_function<T, void>
  * Function object to print a pair into two streams (to be used with for_each)
  */
 template<class T>
-struct pair_print_f : public std::unary_function<T, void>
+struct pair_print_f
 {
     pair_print_f(std::ostream& out1, std::ostream& out2, const string &s = ", ") :
         os1(out1), os2(out2), sep(s) {}
