Is there a way to define a template member in a non-template class?

One thing you can do is make C static. If you have

template  void Evaluate(T parameter)
  static Compute C; // only do this once per T now
  T value = C.Function_B(parameter);
  return T(SomeParameter)*value;

then when you call Evaluate with type_1 you'll have one version of the function that has C in it that will only be constructed the first time the function is called and the same thing happens for type_2.