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