Рассмотрим для примера такую задачу.
Имеется класс, для которого мы хотим иметь глобальный счетчик объектов этого класса. Простейшее решение очевидно:
struct T
{
static int count;
T() { count++; }
~T() { count--; }
}
int T::count = 0; // вот это (или аналогичный вариант со статической
// функцией-инициализатором) мне не нравится
но при этом мы должны "руками" установить начальное значение счетчика... что мне не нравится... ну и аналогичных ситуаций можно много придумать.
Вопрос: как можно организовать инициализацию статических членов класса, чтобы это не требовало явных действий человека, им пользующегося. Вот в Java вроде как можно при объявлении написать static int count = 0; и все ок...
Где-то читал, что все статические переменные и члены класса изначально инициализируются нулями. Эксперимент с доступными компиляторами это вроде подтверждает. Но, как я понимаю, это не оговорено стандартом и пользоваться этим нехорошо. Как быть?