Я заметил, что С++ не скомпилирует следующее:
class No_Good {
static double const d = 1.0;
};
Однако он с радостью разрешит вариацию, в которой двойной изменяется на int, unsigned или любой интегральный тип:
class Happy_Times {
static unsigned const u = 1;
};
Мое решение состояло в том, чтобы изменить его следующим образом:
class Now_Good {
static double d() { return 1.0; }
};
и нарисуйте, что компилятор будет достаточно утончен, чтобы входить туда, где это необходимо... но это оставило мне любопытным.
Почему разработчики С++ позволят мне статическую константу int или unsigned, но не двойную?
Изменить: я использую Visual Studio 7.1 (.net 2003) в Windows XP.
Edit2:
Вопрос был дан ответ, но для завершения я заметил ошибку:
error C2864: 'd' : only const static integral data members can be initialized inside a class or struct