a constant expression is an expression whose value can’t change and that can be evaluated at a compile time. a literal is a constant expression.
whether a given object or expression is a constant expression depends on the types and the initializers. For example:
const int max_files = 20; // max_files is a constant expresion
int staff_size = 27; //staff_size is not a constant expression
const int sz = get_size(); //sz is not a constant expression
对于staff_size,尽管初始化值(initializer)是一个literal,但是它本身是一个plain int, not a const int,所以staff_size不是