digitalmars.D.learn - Strings concatenated at compile time?
- Unwise (8/8) May 01 2014 In the following example from the documentation, are strings
- anonymous (3/11) May 01 2014 I guess it's not guaranteed, but constant folding should take
- Jonathan M Davis via Digitalmars-d-learn (15/29) May 01 2014 On Thu, 01 May 2014 11:12:41 +0000
- bearophile (8/13) May 01 2014 A more general solution is to wrap the concatenation with a call
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 }
May 01 2014
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.
May 01 2014
On Thu, 01 May 2014 11:12:41 +0000 anonymous via Digitalmars-d-learn <digitalmars-d-learn puremagic.com> wrote:On Thursday, 1 May 2014 at 10:42:36 UTC, Unwise wrote: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 DavisIn 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.
May 01 2014
Jonathan M Davis:If you want it to be guaranteed, you'd do something like template foo(string s) { enum foo = s ~ " betty"; }A more general solution is to wrap the concatenation with a call to: alias ctEval(alias expr) = expr; Use: string bar() { return ctEval!(s ~ " betty"); } Bye, bearophile
May 01 2014