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