Заменить,
enum{value};
на,
static int const value; // or unsigned int
enum
s необходимо, поскольку они предполагаются разрешенными во время компиляции.Это гарантирует, что любой результат, который вы вычислили, должен был быть сделан во время компиляции.Другой такой тип static int const
(означает любой целочисленный тип).
Для иллюстрации:
enum E {
X = strlen(s); // is an error, because X is a compile time constant
};