On 2012-08-28 22:10, Tyro[17] <nos...@home.com> wrote:

On 10/28/12 4:44 PM, Dmitry Olshansky wrote:
On 29-Oct-12 00:36, Tyro[17] wrote:
The following fails because the compiler assumes I am trying to
dereference non-pointer variables. Can this be done?

void main()
{
     int i;
     int* pi;
     double d;
     double* pd;
     char c;
     char* pc;

     scan(i, pi, d, pd, c, pc);
}

void scan(A...)(ref A data)
{
     import std.traits;
     foreach (element; data) {
         if(isPointer!(typeof(element)) &&
isIntegral!(typeof(*element))) {
             *element = 10;
         }
     }
}

Thanks

Well, first things first:
if ---> static if


Changing it to static allows compilation, however I get the following runtime error:

     "Segmentation fault: 11"

This happens whether I try to read from *element or modify it.

I assume you've actually initialized the pointers to something?

Given the above code, all the pointers point to null, and a segfault
would be a reasonable reaction.

--
Simen

Reply via email to