placement new和完美转发
e.g.
template <class Type, typename ...Args>
Type *allocate(Args &&...args) {
void *mem = this->get_available_mem(sizeof(Type));
Type *new_ptr = reinterpret_cast<Type *> (mem);
new (new_ptr) Type(std::forward<Args>(args)...);
return new_ptr;
}