template in struct

John Colvin john.loughran.colvin at gmail.com
Sat Mar 23 10:33:50 PDT 2013


On Saturday, 23 March 2013 at 17:08:27 UTC, dsmith wrote:
> How to make workable something like this:
>
> struct S (T...) {
>   T args;
>   string arg_str;
>
>   foreach(i; args) {
>     arg_str ~ to!string(i);
>   }
> }
>
> void some_function(S s) {   // here ... Error: struct S(T...) 
> is used as a type
>   s.args = [a, b, c];
>   string args = s.arg_str;
> }

for a start, you have a foreach sitting in a struct declaration, 
not in any constructor or method.

I think what you mean is:

struct S(T...) {
     T args
     string arg_str;

     this(T args) {
         foreach(i; args)
             arg_str ~ to!string(i);
     }
}

if you want the arg_str to be updated every time args are 
changed, you'll need to introduce a method (or property) for this.


More information about the Digitalmars-d-learn mailing list