Un typedef confuso implica alcance de clase

Estoy leyendo el código de un proyecto C ++ y contiene un código de la siguiente forma:

namespace ns {
    class A {};
    class B {};
}

struct C {
    typedef ns::A* ns::B::* type;
};

¿Alguien puede explicar el significado de latypedef ¿línea?type parece ser algún tipo de puntero a miembro dens::B que apunta ans::A, pero no estoy seguro.

ClaseA yB en el código real no están vacíos, pero creo que no es relevante aquí. Y aquí hay unejemplo en vivo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta