Re: What is the proper way to handle pointers in variable arguments list?
On 10/28/12 5:16 PM, Simen Kjaeraas wrote: On 2012-08-28 22:10, Tyro[17] 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. Wow, so obvious yet so obviously overlooked... *banging my head on the monitor* Thanks
Re: What is the proper way to handle pointers in variable arguments list?
On 2012-08-28 22:10, Tyro[17] 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
Re: What is the proper way to handle pointers in variable arguments list?
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.
Re: What is the proper way to handle pointers in variable arguments list?
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 -- Dmitry Olshansky