Returning the memory address of a vector that was passed by reference
===

I recently saw the following code-block as a response to this question: http://stackoverflow.com/questions/236129/splitting-a-string-in-c

    std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string>     
    &elems) {
        std::stringstream ss(s);
        std::string item;
        while(std::getline(ss, item, delim)) {
            elems.push_back(item);
        }
        return elems;
    }

Why is returning the memory address of the passed-by-reference array "elems" so important here?  Couldn't we make this a void function, or return an integer to indicate success/failure?  We are editing the actual array anyway, right?

Thank you!