void foo (int x)
{
struct A { static const int d = 0; }; // error
}
Кроме ссылки из стандарта, есть ли мотив для этого запретить static
поле внутри внутреннего класса?
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
), а не для других типов данных,Это только один случай использования, который приходит мне в голову.