rem: cout << "popped " << lhs << " from the stack. "; cout << "pushing " << -lhs << " onto the stack.\n"; eval.push(-lhs);
add: cout << "popped " << lhs << " and " << rhs << " from the stack. "; cout << "pushing " << m_op(lhs, rhs) << " onto the stack.\n"; eval.push(m_op(lhs, rhs));
context:     void operator()(char const*, char const*) const    {        long lhs = eval.top();        eval.pop();        cout << "popped " << lhs << " from the stack. ";        cout << "pushing " << -lhs << " onto the stack.\n";        eval.push(-lhs);    }