Я пишу функцию в рамках эксперимента с Boost.Interprocess. В функции я назначаю строковый литерал переменной, объявленной constexpr char*
. Когда я делаю это, я получаю:
warning: deprecated conversion from string constant to char* [-Wwrite-strings]
.
Насколько я понимаю, constexpr
заключается в том, что в объявлении переменной она ведет себя так, как будто переменная была объявлена const
, но с дополнительным условием, что переменная должна быть инициализирована, и что инициализация должна быть с помощью константного выражения.
При таком понимании я бы ожидал, что constexpr char*
будет вести себя как const char*
и поэтому не выдаст предупреждение. Я что-то упускаю из-за того, как работает constexpr
Я компилирую с GCC 4.6.0 20110306, используя -std = c ++ 0x.
Буду признателен за любые причины вынесения предупреждения. Спасибо!