Yes, the second program shifted operator int to base class. That code snippet did not involve any overloading....Overloading is not between base/derived class scopes.
–
ChubsdadAug 17 '10 at 5:54

Simply speaking it means that, both operator T() and operator T*() are viable functions for converting 's' to 'int *'. However based on C++ rules, operator T*() is considered to be more specialized than operator T. I like the reference to Section 12.2.2/3 of "C++ Templates" by David-Vandevoorde. Again taking a very simplistic view, this means that the conversions that operator T*() can be applied to is a subset of the conversions that operator T() can be applied to, and hence operator T*() is considered to be more specialized than operator T().
–
ChubsdadAug 17 '10 at 6:20