There's already llvm::join which is useful for joining a container of items. But there is no way to join items of disparate types, or types who are not in a container for whatever reason.
For example, if you have a std::string, a llvm::StringRef, and a const char *, you would have to manually construct a container to put them in before joining them, which is inconvnient.
This adds a variadic join_items function for this purpose.