pos can be huge. The issues comes from the following use case: The index returns a pos_list that is not used anymore so it returns a new instance of this pos_list, to create the PC i have to wrap it into a pointer via new, and could move it there, but this seems odd. So instead of writing

   PC::create(t, new post_list_t(std::move(index_pos)));

I can write

  PC::create(t, std::move(index_pos))

which is more convenient. For the initializer list, I dont like putting news there...