Цитата из последнего стандартного черновика:
[basi c .scope.pdecl]
Точка объявления имени находится сразу после его полного декларатора ([dcl .decl]) и до его инициализатора (если есть), за исключением случаев, указанных ниже.
Итак, да. Идентификатор s
уже объявлен, поэтому его можно использовать в инициализаторе.
Обратите внимание, что значение s
нельзя использовать до тех пор, пока оно не будет инициализировано. Значение не используется в примере, поэтому это не проблема.
Мне также было бы интересно узнать, действителен ли аналогичный код, когда два члена S находятся в обратном порядке
Порядок членов не имеет значения.