Как указывали другие, рекомендуется всегда инициализировать статические переменные:
static int idx = 0;
Причина этого заключается не в том, что некоторые компиляторы не всегда могут инициализировать статические переменные до нуля (любой компилятор, который не смог выполнить такую инициализацию, был бы окончательно разорван и не мог претендовать на компилятор C или С++), это сказать, что вы имеете в виду - возможно, самое основное правило программирования.
Ответ 2
Пока стандарты говорят "да"... Хорошая практика показывает, что вы должны всегда инициализировать переменные. Вы никогда не знаете, когда вы меняете компилятор или хотите скомпилировать его на другом компьютере, вы хотите свести к минимуму любые потенциальные возможности для непредвиденного поведения.