Hi, I have a question about Walter's DConf keynote and the Memory DisAllocation pattern.
http://dconf.org/2015/talks/bright.html The following example is from the slides of Walter's talk. ---- auto toString(uint u) { static struct Result { this(uint u) { idx = buf.length; do { buf[--idx] = (u % 10) + '0'; u /= 10; } while (u); } @property bool empty() { return idx == buf.length; } @property char front() { return buf[idx]; } void popFront() { ++idx; } char[uint.sizeof * 3] buf; size_t idx; } return Result(u); } import std.stdio; void main() { writeln(toString(28)); } ---- My question is: Does use of this pattern in D require that the size of the Result struct be known by the compiler at compile time? Or, perhaps more precisely: Does the caller of toString need to know the size of the struct that toString will return? In the above example, buf's length is uint.sizeof * 3. But what if buf's length was a function of u (and therefore only known at run-time), rather than a function of uint.sizeof? Thanks! -Parke
