Является ли выражение с интегральной константой glvalue константным выражением?

N4527 5,20 [expr.const] p3

интегральное постоянное выражение является выражением целочисленного или незаданного типа перечисления, неявно преобразованного в значение типа prvalue, где преобразованное выражение является выражением основной константы.

5.20 [expr.const] p5

A постоянное выражение является либо базовым константным выражением glvalue, значение которого относится к объекту, который является разрешенным результатом постоянного выражения (как определено ниже), либо базовым константным выражением prvalue, значение которого является объектом where для этого объекта и его подобъектов:

(5.1) - каждый нестатический элемент данных ссылочного типа относится к объекту, который является разрешенным результатом константного выражения, и

(5.2) - если объект или подобъект имеет тип указателя, он содержит адрес объекта со статической продолжительностью хранения, адрес после окончания такого объекта (5.7), адрес функции или значение нулевого указателя ,

Сущность является разрешенным результатом константного выражения, если это объект сстатическая продолжительность хранения это либо не временный объект, либо временный объект, значение которого удовлетворяет вышеуказанным ограничениям, либо это функция.

void foo(){
    const int a = 1;//a has automatic storage duration
    // all ok in gcc 5.1.0 and clang 3.8.0
    int b[a]{};
    static_assert(a,"");
    switch(1){
      case a:
        ;
    }
}

Вопрос1: естьa интегральное постоянное выражение?

Вопрос2: естьa a постоянное выражение?

Вопрос 3: Является ли целочисленное константное выражение glvalue константным выражением?

Вопрос4:

Если ответ на вопрос 3 положительный, противоречит ли это 5,20 p3, если объект имеет длительность автоматического хранения?

Ответы на вопрос(1)

Ваш ответ на вопрос