我正在使用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