привет!
есть препроцессорный код, который генерит десериализаторы в виде:
type1 arg0;
type2 arg1;
archive ia(...);
ia & arg0
& arg1;
есть задача, сделать так, чтоб все типы умеющие использовать аллокатор, конструировались с использованием этого аллокатора.
более полный пример:
template<typename Alloc>
struct type {
type(Alloc &alloc)
:alloc(alloc)
{}
void some_func(const char *ptr, const std::size_t size) {
archive ia(ptr, size, alloc);
type0 arg0;
type1 arg1;
ia & arg0
& arg1;
func(arg0, arg1);
}
private:
Alloc &alloc;
};
тут, обратите внимание на type0/type1 и arg0/arg1.
type0/type1 могут быть как классовыми типами, так и подами/фундаментальными.
во время кодогенерации нет возможности определить, чем на самом деле являются типы, и, следовательно, нет возможности сгенерировать нужный способ инициализации.
предложения?
спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)