I'm proposing a small boost library:

struct minimal_init {}; 

template <typename T> 
struct minimal_constructible : public T 

   minimal_constructible() : T(minimal_init()) {}
}; 

The purpose of this is to enable vectors of simple structs (containing only POD members)
to have resize calling a do-nothing constructor. Let's say that I have a loop that I'd like to 
calculate in parallel:

struct Dummy 

  Dummy(int a_=0) : a(a_) {} 
  Dummy(const minimal_init &) {} // Without a v-table, this shouldn't need to touch any part of the created object? 

  int a; 
};

void foo()
{
  #define N 100
  std::vector<minimal_constructible<Dummy> >   data;

  data.resize(N);
  #pragma omp parallel for
  for (size_t i=0;i<N;++i)
    data[i].a=i;
}

Using reserve+push_back is unlikely to create a properly sorted vector.

Ideally, we'd add a resize member to std::vector that takes a template T2 that is different 
from T, just like emplace_back does, but that won't happen soon.

I'll probably want to add a few things to make minimal_constructible<T> behave more 
like a T, but I really liked the idea of a five line boost library ;)

Good idea, or not?

Thanks in advance,
Henrik