c++ - constexpr const vs constexpr variables? -
this question has answer here:
- difference between `constexpr` , `const` 5 answers
it seems obvious constexpr implies const , common see:
constexpr int foo = 42; // no const here
however if write:
constexpr char *const str = "foo";
then gcc spawn "warning: deprecated conversion string constant ‘char*’" if -wwrite-string flag passed.
writing:
constexpr const char *const str = "foo";
solves issue.
so constexpr const , constexpr same?
the issue in variable declaration, constexpr
applies const
-ness object declared; const
on other hand can apply different type, depending on placement.
thus
constexpr const int = 3; constexpr int = 3;
are equivalent;
constexpr char* p = nullptr; constexpr char* const p = nullptr;
are equivalent; both make p
const
pointer char
.
constexpr const char* p = nullptr; constexpr const char* const p = nullptr;
are equivalent. constexpr
makes p
const
pointer. const
in const char *
makes p
point const char
.
Comments
Post a Comment