Strings concatenated at compile time?

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu May 1 05:05:32 PDT 2014


On Thu, 01 May 2014 11:12:41 +0000
anonymous via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com>
wrote:

> On Thursday, 1 May 2014 at 10:42:36 UTC, Unwise wrote:
> > In the following example from the documentation, are strings 
> > concatenated at compile time?
> >
> > template foo(string s) {
> >   string bar() { return s ~ " betty"; }
> > }
> >
> > void main() {
> >   writefln("%s", foo!("hello").bar()); // prints: hello betty
> > }
> 
> I guess it's not guaranteed, but constant folding should take 
> care of it, yes.

If you want it to be guaranteed, you'd do something like

template foo(string s)
{
    enum foo = s ~ " betty";
}

void main()
{
    writeln(foo!"hello");
}

I would hope that the optimizer would have optimized out the
concatenation in your example though.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list