Из стандартного раздела 9.4.2:
Если член статических данных имеет константный интеграл или константный тип перечисления, его объявление в определении класса может указывать инициализатор константы, который должен бытьинтегральное постоянное выражение.В этом случае член может появляться в виде целочисленных константных выражений в своей области видимости. Член по-прежнему должен быть определен в области имен , если он используется в программе, а определение области имен не должно содержать инициализатора.
По существу, локальные классы не имеют связии статическим членам данных требуется связывание.
Поскольку невозможно определить статический член данных локального класса в области пространства имен (объявление с инициализатором не является определением), они не разрешены, независимо от того,они имеют константный интегральный тип или нет.На первый взгляд может показаться, что компилятор должен просто иметь возможность встроить значение, но что произойдет, если вы попытаетесь получить доступ к указателю на член?С классами в пространстве имен вы бы просто получили ошибку компоновщика, но локальные классы не имеют никакой связи.
Я предполагаю, что теоретически они могли бы просто позволить вам использовать статические константные интегральные типы в локальных классах, пока они толькоиспользуется в интегральных константных выражениях, но это, вероятно, просто возложило бы слишком много бремени на разработчиков стандартов и поставщиков компиляторов, чтобы их можно было отличить из-за очень небольшой практической ценности;локальные статические переменные доступны из локальных классов, поэтому использование локальных статических констант должно быть таким же хорошим.