// { dg-do assemble  }

template <class S, class T>
class mem_fun1_t {
public:
  mem_fun1_t(S (T::*pf)(double)) {} 
};

template <class T>
class mem_fun1_t<void, T> { 
public:
  mem_fun1_t(void (T::*pf)(double)) {}
};

struct Operation {
  double eval(double) { return 0; }
};

int main() {
  mem_fun1_t<double, Operation> m(&Operation::eval);
}
