我正在编写一个函数作为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。
发出警告的任何理由都将受到赞赏。谢谢!
答案 0 :(得分:10)
来自const
的{{1}}会使您的变量constexpr
。
您仍然遇到字符串文字为char* const
并且允许将其地址转换为const char
的问题,但已弃用。
答案 1 :(得分:8)
对于另一个解决方案:
而不是 -
X
你可以做 -
constexpr char* foo = "bar";
这也将消除警告。