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.