For those of use who are pointer to member syntax challenged (including me), example G of the attachment to the bug:
class G{
public:
class G1{
int a;
int b;
}c;
int d;
G(int dd):d(dd){};
};
const G g;
G::G1 G::* gg = &G::c;
(nobody least of all me spotted the mistake that the last character should be c :)
The last line is read as, gg is a pointer to a member of class G and the type of that member is class G1 which is a member of class G and gg is initialised to a pointer to member c of an object of class G.
Cheers
Lex