Peter Alexander:
> Any time you want to create a string without allocating memory.
>
> char[N] buffer;
> // write into buffer
> // try to use buffer as string
I have discussed a bit two or three times about this topic. In a post I even
did suggest the idea of "scoped immutability", that was not appreciated.
Generally creating immutable data structures is a source of troubles in all
languages, and in D it's not a much solved problem yet.
In D today you are sometimes able to rewrite that as:
string foo(in int n) pure {
auto buffer = new char[n];
// write into buffer
return buffer;
}
void bar(string s) {}
void main() {
string s = foo(5);
bar(s); // use buffer as string
}
Bye,
bearophile