On Thursday, 5 December 2013 at 17:30:37 UTC, inout wrote:
My approach in cases like that used to be to pass an optional char[] buffer = null as last argument (it doesn't work as nice in variadic functions though):

// constructs the result in a buffer if one is passed until there is no more space left, in which case it reallocates the buffer char[] buildPath(const(char)[] path1, const(char)[] path2, char[] buffer = null) {
  Appender!(char) appender = useBuffer(buffer);
  ...
}

The nice thing about output ranges instead of this approach is the allocation strategy is left up to the caller rather than the function. I think generalized SSO (a small static buffer that can fall back to a dynamic allocation) will become a very common idiom as more and more of phobos accepts output ranges.

Reply via email to