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).