Как понимать предложение «полное выражение должно быть постоянным выражением», которое упоминается в стандарте - PullRequest
5 голосов
/ 29 мая 2020

A go, Некоторые правила в стандарте гласят, что они применяются к выражению , я был смущен тем, могут ли эти правила также применяться к полному выражению произвольно. Я получаю ответы на этот вопрос . Однако в стандарте есть некоторые правила, такие как «полное выражение инициализации должно быть постоянным выражением.». Например:
dcl.constexpr # 9
basi c .start.static # 2

Все говорят, что полное выражение должно быть константным выражением в указанных выше ссылках.
Предварительным условием для константного выражения является то, что оно должно быть основным константным выражением, которое сначала является выражением . Мы знаем, что эти правила в expr.const # 2 применяются к выражению , а не к полному выражению , которое не является выражением.

Выражение e является основным константным выражением, если только оценка e, следуя правилам абстрактной машины, не оценила бы одно из следующих выражений :

Однако init-declarator, который является формой declarator initializer(opt), не является выражением. Итак, как интерпретировать полное выражение инициализации как постоянное выражение? Или предложение в стандарте означает, что все эти выражения внутри полного выражения должны быть постоянными выражениями?

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