If for some crazy reason I want/need a uninitialized type T, how do I use type_with_alignment, etc to make it work?

eg something vaguely like this:

template <typename T>
struct uninitted
{
   type_with_alignment<sizeof(T), alignment_of<T>::value_type>::type myT;

  void init_later(some_params)
  {
      new (&myT) T(some_params);
  }
};

Does the in-place new work?  Is the unitted<T> 'just like' T in terms of memory, usage within a struct, etc?

struct Foo1
{
  Bar bar;
  SomeT t;
  Foo foo;
};

struct Foo2
{
   Bar bar;
   uninitted<SomeT> t;
   Foo foo;
};

sizeof(Foo1) == sizeof(Foo2)
offsetof(Foo1, t) == offsetof(Foo2, t)
offsetof(Foo1, foo) == offsetof(Foo2, foo)

all true?

Thanks
Tony