Я пишу функцию как часть эксперимента с 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 = С++ 0x.
Было бы полезно оценить любые аргументы в пользу выдачи предупреждения. Спасибо!