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