The C++ language specifies certain compatibilities when specifying operands. Table 4.5 shows the types of operands acceptable to operators that require operands of type type.
Table 4.5 Operand Types Acceptable to Operators
Type Expected | Types Allowed |
type | const type volatile type type& const type& volatile type& volatile const type volatile const type& |
type* | type* const type* volatile type* volatile const |
const type | type const type const type& |
volatile type | type volatile type volatile type& |
Because the preceding rules can always be used in combination, a const pointer to a volatile object can be supplied where a pointer is expected.