Я пытаюсь написать специализированный распределитель STL, который получен из std::allocator
, но каким-то образом все вызовы allocate()
переходят к базовому классу. Я сузил его до этого кода:
template <typename T> class a : public std::allocator<T> {
public:
T* allocate(size_t n, const void* hint = 0) const {
cout << "yo!";
return 0;
}
};
int main()
{
vector<int, a<int>> v(1000, 42);
return 0;
}
Я ожидаю "Yo!" чтобы печатать, а затем какая-то ужасная ошибка, потому что я фактически ничего не выделяю. Вместо этого программа работает нормально и ничего не печатает. Что я делаю неправильно?
Я получаю те же результаты в gcc и VS2008.