我正在使用Boost.Interprocess编写一个函数作为实验的一部分。在函数中,我将一个字符串文字分配给一个声明为constexpr char*
的变量。当我这样做时,我得到:constexpr和不推荐使用的转换警告
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。
任何推理发出警告将不胜感激。谢谢!
谢谢。我忽略了指针的另一个“常量”。我将声明更改为'constexpr const char *',警告消失。谢谢! – mmoran 2011-03-13 17:24:11