Пользовательский распределитель для std :: vector <char> игнорируется
Я пытался использовать пользовательский распределитель дляstd::vector<char>
но я заметил чтоstd::vector
не требует / не использует какие-либо функции-члены из моего распределителя. Как это возможно?
#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?
}
Я пробовал вышеупомянутую программу с онлайн-компилятором C ++ 11 (LiveWorkSpace), предоставляя g ++ 4.7.2, 4.8 и 4.6.3.
В основномallocate()
, deallocate()
, construct()
а такжеdestroy()
не определены в моем распределителе, но программа компилируется, и все элементы будут инициализированы в 0.