// 9-2. If we define the name function as a plain, nonconst member
// function, what other functions in our system must change and why?
based on the question, the answer would be
bool compare(const Student_info&, const Student_info&);
// because this function uses the member function as it's parameter.
// giving writing access on a read-only variable is forbidden.
after removing the const on the type, the code doesn't compile and showed me these error which I assumed to be related with the standard library codes which may not allow const parameter on it's predicate function. No?