alias of member from pointer to struct?
Jarrett Billingsley
kb3ctd2 at yahoo.com
Sat Apr 14 14:51:25 PDT 2007
"BCS" <ao at pathlink.com> wrote in message
news:ce0a334393e38c94c9daebff03a at news.digitalmars.com...
> is their a clean way to do this?
>
> struct S
> {
> int i;
> int j;
> }
>
> S* s;
>
> static if(cond) alias s.i var;
> else alias s.j var;
>
> // use var for lots of things
>
> This is going to be in a performance bottle neck so it must resolve to
> ideal code.
>
> Also this is supposed to be demonstrating D's ability to, along with other
> things, remove redundancy so ideally only the actual symbol will appear in
> the static if.
If the static if is not at global scope, you can make a variable that points
to the member:
const bool pick = false;
struct S
{
int i;
int j;
}
void main()
{
S* s;
static if(pick)
int* var = &s.i;
else
int* var = &s.j;
}
Once macros come out you should be able to make a macro that expands to s.i
or s.j.
More information about the Digitalmars-d-learn
mailing list