i have a constexpr function named access, and i want to access one element from an array:
char const*const foo=\"foo\";
char const*const bar[10]={\"bar\"};
con
The array needs to be declared constexpr, not just const.
constexpr char const* bar[10]={"bar"};
Without that, the expression bar[0] performs an lvalue-to-rvalue conversion in order to dereference the array. This disqualifies it from being a constant expression, unless the array is constexpr, according to C++11 5.19/2, ninth bullet:
an lvalue-to-rvalue conversion unless it is applied to
- a glvalue of literal type that refers to a non-volatile object defined with constexpr
(and a couple of other exceptions which don't apply here).