> Languages and APIs > ILOG Concert Technology for C++ Users > Accessing Solution Information > Accessing Solution Status

Calling cplex.solve returns a Boolean indicating whether or not a feasible solution (but not necessarily the optimal one) has been found. To obtain more of the information about the model that ILOG CPLEX found during the call to the solve method, cplex.getStatus can be called. It returns a member of the nested enumeration:

enum IloAlgorithm::Status {
Unknown,
Feasible,
Optimal,
Infeasible,
Unbounded,
InfeasibleOrUnbounded,
Error
};

Notice that the fully qualified names have the IloAlgorithm prefix. Table 1.4 shows what each return status means for the extracted model.

Table 1.4 Algorithm Status and Information About the Model
Return Status 
Extracted Model 
Feasible 
has been proven to be feasible. A feasible solution can be queried. 
Optimal 
has been solved to optimality. The optimal solution can be queried. 
Infeasible 
has been proven to be infeasible. 
Unbounded 
has been proven to be unbounded. The notion of unboundedness adopted by IloCplex does not include that the model has been proven to be feasible. Instead, what has been proven is that if there is a feasible solution with objective value x*, there exists a feasible solution with objective value x*-1 for a minimization problem, or x*+1 for a maximization problem. 
InfeasibleOrUnbounded 
has been proven to be infeasible or unbounded. 
Unknown  
has not been able to be processed far enough to prove anything about the model. A common reason may be that a time limit was hit. 
Error 
has not been able to be processed or an error occurred during the optimization. 

As can be seen, these statuses indicate information about the model that the ILOG CPLEX optimizer was able to prove during the last call to method solve. In addition, the ILOG CPLEX optimizer provides information about how it terminated. For example, it may have terminated with only a feasible but not optimal solution because it hit a limit or because a user callback terminated the optimization. Further information is accessible by calling solution query routines, such as method cplex.getCplexStatus, which returns a member of the nested enumeration type IloCplex::CplexStatus, or methods cplex.isPrimalFeasible or cplex.isDualFeasible.

For more information about those status codes, see the ILOG CPLEX Reference Manual.