Вот основная проблема. Есть API, от которого я зависит, с методом, использующим следующий синтаксис:
void foo_api (std::vector<type>& ref_to_my_populated_vector);
Область кода, о которой идет речь, довольно интенсивно работает, и я хочу избежать использования кучи для выделения памяти. В результате я создал собственный распределитель, который выделяет память, необходимую для вектора в стеке. Итак, теперь я могу определить вектор как:
// Create the stack allocator, with room for 100 elements
my_stack_allocator<type, 100> my_allocator;
// Create the vector, specifying our stack allocator to use
std::vector<type, my_stack_allocator> my_vec(my_allocator);
Это все хорошо. Тесты производительности с использованием выделенного вектора стека по сравнению со стандартным вектором показывают производительность примерно в 4 раза быстрее. Проблема в том, что я не могу вызвать foo_api! Итак ...
foo_api(my_vec); // Results in an error due to incompatible types.
// Can't convert std::vector<type> to std::vector<type, allocator>
Есть ли решение для этого?