использовать аллокатор только для тех типов, которые это позволяют
От: niXman Ниоткуда https://github.com/niXman
Дата: 13.03.14 11:08
Оценка:
привет!

есть препроцессорный код, который генерит десериализаторы в виде:
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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.