unfoldr
Since this function returns a container without being passed a container, I chose to template the _unfold struct with a container and make the functor instantiable via c++14 template variables
This is the best way I found to make this function as generic as possible