Can someone tell me if function argument evaulation rules make this exaple code illegal...

class foo { public: int x; };

void bar(foo & c, int y = c.x) {}

note that the question is about referencing of foo's member data within an argument list via a reference argument within the same list.