Consider the following simplified example and desired output:
class A
{
class combined_iterator
{
????
}
typedef ??? t_combined_it;
The answers other people gave only work for joining two ranges, but not an arbitrary number of range.
PStade Oven has a concatenated adaptor for joining any number of ranges; it also has a jointed adaptor for joining 2 ranges, specifically.
You can of course turn the ranges into iterators with begin() and end() if necessary; just make sure the ranges outlast the iterators.