Without this, the following statements will create ArrayRefs that refer to temporary storage that goes out of scope by the end of the line:
someArrayRef = getSingleElement(); someArrayRef = {elem1, elem2};
Note that the constructor still has this problem:
ArrayRef<Element> someArrayRef = getSingleElement(); ArrayRef<Element> someArrayRef = {elem1, elem2};
but that's a little harder to get rid of because we want to be able to use this in calls:
takesArrayRef(getSingleElement()); takesArrayRef({elem1, elem2});
Part of rdar://problem/16375365.