El asignador personalizado para std :: vector <char> se ignora

Estaba tratando de usar un asignador personalizado parastd::vector<char>, pero me di cuenta de questd::vector no necesita / usa ninguna de las funciones miembro de mi asignador. ¿Cómo es esto posible?

#include <vector>

struct A : private std::allocator<char> {
   typedef std::allocator<char> alloc;
   using alloc::value_type;
   using alloc::pointer;
   using alloc::const_pointer;
   using alloc::difference_type;
   using alloc::size_type;
   using alloc::rebind;
   // member functions have been removed, since the program compiles without them
};

int main() {
    std::vector<char, A> v;
    v.resize(4000);
    for (auto& c : v)
      if (c)
         return 1; // never happens in my environment
   return 0; // all elements initialized to 0. How is this possible?
}

Estaba probando el programa anterior con un compilador de C ++ 11 en línea (LiveWorkSpace), proporcionando g ++ 4.7.2, 4.8 y 4.6.3.

Básicamenteallocate(), deallocate(), construct() ydestroy() no están definidos en mi asignador, pero el programa se compila y todos los elementos se inicializarán a 0.

Respuestas a la pregunta(2)

Su respuesta a la pregunta