I think you misread the documentation. What the documentation says is that "if the problem is not a MIP, the function will return 0".
The reverse is however not true. In other words, if the function returns 0 then you cannot conclude that the problem is not a MIP.
It may be debatable whether CPLEX should return 0 or 1 if the problem solves very early (in your case in presolve). We chose to return 0 in that case.
In order to test the problem type you can use functions like IloCplex::isMIP(), IloCplex::isQC(), IloCplex::isQO().
#CPLEXOptimizers#DecisionOptimization