Например строковый литерал: "Hello, world!" не может стоять слева от оператора присваивания. Тогда, как он может являться леводопустимым выражением?
"WTF" = "Hello, world!"; // ошибка компиляции
l-value:
r-value:
Строковый литерал в С++ по всей строгости - это константа, и уже по одному этому участвовать в присвоении не может. Более того, в 2.14.5.12 сказано: The effect of attempting to modify a string literal is undefined.
Далее, по сути это - массив, а массив опять же в присвоении ну никак не участвует.
В 3.10.9 говорится: "If an expression can be used to modify the object to which it refers, the expression is called modifiable. A program that attempts to modify an object through a nonmodifiable lvalue or rvalue expression is ill-formed."
Наш же lvalue явно немодифицируемый.
Впрочем, само понятие lvalue имеет несколько иной смысл, чем приписываемый вами.
An lvalue (so called, historically, because lvalues could appear on the left-hand side of an assignment expression) designates a function or an object.
Тут главное не то, что исторически они могли быть слева в выражении присваивания, а то, что это объект в памяти, от которого можно взять адрес. А получить адрес строкового литерала вполне можно, и в этом смысле это lvalue.
По-моему, так... (с) Пух
lvalue не значит, что такое выражение всегда может стоять слева от оператора присваивания. К примеру, пусть у Вас есть const int meConst = 5;
, meConst
в выражении meConst = 6;
является lvalue, но пример всё равно собрать не удастся, т.к. нельзя изменять const int
. То же самое со строковым литералом: да — это lvalue, нет — его нельзя модифицировать.
И небольшая, но релевантная цитата из C11[6.3.2.1]:
A modifiable lvalue is an lvalue that does not have array type, does not have an incomplete type, does not have a constqualified type, and if it is a structure or union, does not have any member (including, recursively, any member or element of all contained aggregates or unions) with a constqualified type.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть менюНужно, чтобы при нажатии на любой из пунктов меню - он подчеркивался черной линией
ЗдравствуйтеЯ чет торможу, не могу найти в документации как подключить jquery в Yii2
При выборе пункта из меню, вместо того что бы нужный объект вставлялся в поле, меню закрываетсяПодскажите, что необходимо добавить в скрипт