Почему поле внутри локального класса не может быть статическим?

void foo (int x)
{
  struct A { static const int d = 0; }; // error
}

Помимо ссылки из стандарта, есть ли какая-либо мотивация для запрета статического поля внутри внутреннего класса?

error: field `foo(int)::A::d' in local class cannot be static

Изменить : Однако static ] функции-члены разрешены. У меня есть один вариант использования для такого сценария. Предположим, я хочу, чтобы foo () вызывался только для POD, тогда я могу реализовать его, например,

template<typename T>
void foo (T x)
{
  struct A { static const T d = 0; }; // many compilers allow double, float etc.
}

foo () должен пройти только для POD (если разрешено static ), а не для других типов данных. Это всего лишь один из вариантов использования, который приходит мне в голову.

13
задан iammilind 26 May 2011 в 12:24
поделиться