Simplify result using fold expressions and concepts.
Instead of writing recursive templates, we can template over the container type based on the number of arguments.
Also, we should specialize std::get for result, because at the moment we need to branch with if constexpr
when it has only one result type, because there is no std::get<0>(T) of course.