What is the proper way to handle pointers in variable arguments list?

Tyro[17] nospam at home.com
Sun Oct 28 14:08:53 PDT 2012


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.


More information about the Digitalmars-d-learn mailing list