The issue is that in a variable declaration, constexpr
always applies the const
-ness to the object declared; const
on the other hand can apply to a different type, depending on the placement.
Thus
constexpr const int i = 3;
constexpr int i = 3;
are equivalent;
constexpr char* p = nullptr;
constexpr char* const p = nullptr;
are equivalent; both make p
a const
pointer to char
.
constexpr const char* p = nullptr;
constexpr const char* const p = nullptr;
are equivalent. constexpr
makes p
a const
pointer. The const
in const char *
makes p
point to const char
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…