«полное выражение» против «полного выражения» - PullRequest
2 голосов
/ 20 мая 2019

Я просматривал этот пост в GitHub, но я не мог понять, что ОП подразумевает под этим:

"full expression" suggest that it is a kind of expression, but sometimes it is not.

Моя интерпретация заключается в том, что«полное выражение» (термин, используемый в стандарте) не может быть выражением.[intro.execution] / 5 дает определение полного выражения следующим образом:

A полное выражение равно
(5.1) - неоцененный операнд (8.2),
(5.2) - константа-выражение (8.6),
(5.3) - инициатор-декларатор (пункт 11) или mem-инициализатор (15.6.2), включая составные выражения инициализатора,
(5.4) - вызов деструктора, сгенерированного в конце времени жизни объекта, отличного от временного объекта (15.2), или
(5.5) - выражение, которое не является подвыражением другого выраженияи это не является частью полного выражения.

Если моя интерпретация верна, я хотел бы знать, какая из вышеупомянутых пунктов дает полное выражение, которое не является выражением.Иначе, то есть, если я ошибаюсь, что ФП имел в виду под его комментарием?

1 Ответ

1 голос
/ 20 мая 2019

Формальный список выражений можно найти в [gram.expr] . Это довольно много текста, поэтому я не собираюсь включать его здесь, но используя его, мы видим, что init-декларатор и mem-initializer не являются выражениями в соответствии с грамматика. Это означает, что хотя init-декларатор и mem-initializer считаются полными выражениями, грамматически они не являются выражениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...