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








"bearophile" <bearophileHUGS lycos.com>