The state of string interpolation

Steven Schveighoffer schveiguy at gmail.com
Thu Dec 6 20:57:07 UTC 2018


On 12/6/18 3:08 PM, Steven Schveighoffer wrote:
> On 12/6/18 2:52 PM, Adam D. Ruppe wrote:
> 
>> Passing the actual variable as a CT arg is doable.. but only if there 
>> IS an actual variable.
>>
>> i"hi $(name)"; // could pass T!("hi ", name)
>> i"hi $(a+b)"; // error: cannot read variables at compile time
> 
> Yeah, I know. I was hoping we could bend the rules a bit in this case. 
> Since an interpolation would be a different kind of alias (with special 
> traits attached), it could have its own allowances that normally don't 
> happen. Make it like a lazy alias ;)

This doesn't work:

foo!(a + b);

But this does:

foo!(() => a + b);

However, the type is different, and it's not implicitly called, as it's 
a lambda.

So writeln(Args) would show "hi <someFunctionSignature>".

We still need some compiler-magic here, but it's almost supported...

-Steve


More information about the Digitalmars-d mailing list