* @details This will visit every object, but assumes each object is the same type. This can reduce the deeply nested visit calls. This will return a function that will take the visitor callback. So it will be called with `visit_all(xs...)([](auto... ys) {})` where `xs...` and `ys...` are the same number of parameters.
* @details This will visit every object, but assumes each object is the same type. This can reduce
*
* the deeply nested visit calls. This will return a function that will take the visitor callback.
* So it will be called with `visit_all(xs...)([](auto... ys) {})` where `xs...` and `ys...` are the
* same number of parameters.
*
* @param x A raw data object
* @param x A raw data object
* @param xs Many raw data objects
* @param xs Many raw data objects
* @return A function to be called with the visitor
* @return A function to be called with the visitor