Iterate over distinct pairs of a growing list

Given a single list of n items (x1,x2,x3,...,xn), it is easy to iterate over all unique pairs in the list, i.e. (x1,x2), (x1,x3), ..., (x1,xn), (x2,x3), (x2,x4), ... ,(x2,xn),...,(x[n-1],xn). As a practical example, this could be an STL vector x, and iterate

for (auto i=0; i<n; i++) {
   for (auto j=i+1, j<n; j++) {
      // Do something with x[i],x[j]

My problem: what if the Do something part could grow the vector x, by adding one or even several elements. For example, after evaluating the loop for (x1,x2) the new length could be n+1 with a new element x[n+1]. Now I also want to, in the same loop, consider at some point the pairs (x1,x[n+1]),(x2,x[n+1]),...,(xn,x[n+1]). Is this possible, and if so, how?

I think two other pieces are: the order of evaluation doesn't matter (i.e. it doesn't matter when I get to consider pairs of x[n+1]) and it doesn't matter the order of the pairs (x[n+1],x1) or (x1,x[n+1]).