full workflow templated on character type and allocator with char and std::allocator defaults