Не знаю, правильно ли я понял ваш вопрос.
это означает, что без указания пользователем c'tor, 'i' и 'c' будут оба инициализированы как 0.
Не обязательно.
Например:
T x; // `i` and `c` are uninitialized
T *ptr = new T; // `i` and `c` are uninitialized
T *pptr = new T(); //`i` and `c` are zero initialized as `T()` implies value initialization
T x(); // x is a function returning a type T and taking no arguments.
Если быть точным value initialization
(C ++ 03 Section $ 8.5 / 5) - это то, что вы ищете. Он был введен в C ++ 03.