Templates in classes => what is wrong?
    Xan 
    xancorreu at gmail.com
       
    Tue Apr 17 11:39:14 PDT 2012
    
    
  
On Tuesday, 17 April 2012 at 18:25:21 UTC, Ali Çehreli wrote:
> On 04/17/2012 11:13 AM, Xan wrote:
>
> > The idea is behind this https://gist.github.com/2407923
> > But I receive:
> >
> > $ gdmd-4.6 algorisme_code.d
> > algorisme_code.d:22: Error: variable codi cannot be read at
> compile time
> > algorisme_code.d:22: Error: argument to mixin must be a
> string, not (codi)
>
> mixin is about code generation. For that reason the string that 
> is given to it must be available at compile time. Upon 
> analyzing the code, that is the case in your example, but 
> because mixin() appears inside the constructor, it cannot use a 
> string parameter.
>
> That's why I had used a template parameter for the function 
> string. There may be a number of solutions but only you can 
> decide on what to do. One solution is to mixin the delegate 
> outside of the constructor and pass as an argument along with 
> its string representation:
>
>     // Untested code
>     this(... Funcio funcio, string funcioText) {
>         ...
>     }
>
> In main:
>
>     enum funcioText = "...";
>     auto funcio = mixin(funcioText);
>
>     ... new Algorisme(..., funcio, funcioText);
>
> Ali
What is change is this code? Is it the same as this 
https://gist.github.com/2407923 (I revise the code)?
With my (v. 2) code I receive the errors:
$ gdmd-4.6 algorisme_code.d
algorisme_code.d:44: Error: variable codi cannot be read at 
compile time
algorisme_code.d:44: Error: argument to mixin must be a string, 
not (codi)
algorisme_code.d:45: Error: constructor 
algorisme_code.Algorisme!(int,int).Algorisme.this (string nom, 
uint versio, int function(int) funcio, string codi) is not 
callable using argument types (string,int,_error_,string)
Why the string is not given at compile code? I don't understand 
it!
Xan.
    
    
More information about the Digitalmars-d-learn
mailing list