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