При компиляции кода ниже я получаю сообщение об ошибке в строке 3 о том, что const_cast не является lvalue. Это только проблема, потому что я использовал gcc 7.x (даже если он полностью совместим с C ++ 17)? Или это действительно неверный код в соответствии со стандартом?
Приведенный ниже код является минимальным примером, вызывающим ошибку. Пробовал gcc 7.1, 7.4, а также https://www.onlinegdb.com/online_c++_compiler и получал такую же ошибку.
char* const a = "xyz";
char* b;
const_cast<char*>(a) = b; // not lvalue error
Точная ошибка, которую дает gcc: «error: lvalue требуется в качестве левого операнда присваивания».
ПРИМЕЧАНИЕ (забыл добавить): пример не имеет ничего общего с реальным кодомЯ бы когда-нибудь написал. Я привел пример, который (я полагаю) был создан, чтобы проверить, насколько хорошо люди понимают стандарт. Поэтому меня интересует только то, что я задал в вопросе, т. Е. Является ли это действительным кодом или нет (и почему). Thx!