Andrei Alexandrescu wrote: > On 1/18/11 2:55 PM, so wrote: >>> 2. joiner uses an idiom that I've experimented with in the past: it >>> defines a local struct and returns it. As such, joiner's type is >>> impossible to express without auto. I find that idiom interesting for >>> many reasons, among which the simplest is that the code is terse, >>> compact, and doesn't pollute the namespace. I'm thinking we should do >>> the same for Appender - it doesn't make much sense to create an >>> Appender except by calling the appender() function. >> >> Didn't know there was a solution to namespace pollution. >> This one is a very nice idea, are you planning to use it in phobos in >> general? >> Retro, Stride... there should be many. > > I plan to, albeit cautiously. Sometimes people would want e.g. to store > a member of that type in a class. They still can by saying > typeof(joiner(...)) but we don't want to make it awkward for them. > > Andrei
I do this sometimes with Appender for splitting complex construction of a string between functions. Is that bad practice? What is the alternative idiom? If possible, please reconsider making Appender an existential type.