Herb Sutter calls this kind of thing "spelling things generically" meaning that the same generic code will compile against different types.
In this case the same for loop code will compile against a type that may hold zero or one items and a type that may contain 0->n items. Maybe this pattern could be extended to shared_ptr for example.