Mixin template confusion / compiler error.
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 19 00:23:23 PST 2017
On 01/19/2017 12:03 AM, Chris Katko wrote:
> template sizer2D() // no params here for simplicity
> {
> const char [] sizer2D = "64,64";
> }
> array_t!(mixin(sizer2D!())) case2; // FAILS (error below)
> Error: template instance array_t!64 does not match template declaration
> array_t(int width, int height)
The comma operator strikes back but this time it's caught. :) The clue
was exposed because my compilation has the following dmd flag:
-de show use of deprecated features as errors (halt compilation)
According to spec, "The text contents of the string must be compilable
as a valid StatementList, and is compiled as such.":
https://dlang.org/spec/statement.html#mixin-statement
So, "64,64" is mixed in as two expressions around a comma operator and
it gets the value 64.
Ali
More information about the Digitalmars-d-learn
mailing list