Я столкнулся со следующей проблемой.Я хочу создать шаблонную функцию, которая может обрабатывать столько структур, сколько возможно, но она идет с ограничением, что она должна иметь возможность копировать все данные непрерывно в буфер.
Так, например:
struct A{
int foo;
int bar;
}
Должен стать буфером с 8 байтами.
struct B{
int foo;
vector<int> bar;
}
B.bar = vector<int>(2);
Должен стать буфером с 12 байтами.
Для случая B, если я уже знаю, как BПохоже, я могу вызвать malloc (), чтобы выделить 12 байтов и вручную скопировать данные в этот буфер.
Есть ли способ добиться этого с помощью шаблонов, или мне нужно добавить ограничение, что любая структураданные моей шаблонной функции уже должны храниться смежно?
Редактировать:
Это то, что я имею в виду, копируя данные B в буфер.
int *buffer = (int*) malloc(sizeof(int)+sizeof(int)*bar.size());
buffer[0] = foo;
for(int i=0; i<B.bar.size(), i++)
buffer[i+1]=B.bar[i];