constexpr和不推荐的转换警告

时间:2011-03-13 05:04:43

标签: c++ gcc c++11

我正在编写一个函数作为Boost.Interprocess实验的一部分。在函数中,我将字符串文字分配给声明为constexpr char*的变量。当我这样做时,我得到:

warning: deprecated conversion from string constant to char* [-Wwrite-strings]

我对constexpr的理解是,在变量声明中,它的行为就像变量被声明为const一样,但是添加了规定必须初始化变量,并且初始化必须是不断表达。

根据这种理解,我希望constexpr char*表现为const char*,因此不会发出警告。我错过了constexpr的工作原理吗?

我正在使用-std = c ++ 0x编译GCC 4.6.0 20110306。

发出警告的任何理由都将受到赞赏。谢谢!

2 个答案:

答案 0 :(得分:10)

来自const的{​​{1}}会使您的变量constexpr

您仍然遇到字符串文字为char* const并且允许将其地址转换为const char的问题,但已弃用。

答案 1 :(得分:8)

对于另一个解决方案:

而不是 -

X

你可以做 -

constexpr char* foo = "bar";

这也将消除警告。