Я не могу понять эту строку - разыменование адреса частной переменной-члена или что?

Я задал вопрос некоторое время назадо доступе к базовому контейнеру адаптеров STL, Я получил очень полезный ответ:

template 
    S& Container(priority_queue& q) {
        struct HackedQueue : private priority_queue {
            static S& Container(priority_queue& q) {
                return q.*&HackedQueue::c;
            }
        };
    return HackedQueue::Container(q);
}

int main()
{
    priority_queue pq;
    vector &tasks = Container(pq);
    return 0;
}

К сожалению, я не могне понимаю эту строку:

return q.*&HackedQueue::c;

Что делает эта строка? Кроме того, как эта строка может получить доступ к закрытому контейнеру вpriority_queue что передается в функцию?Container

Ответы на вопрос(1)

Ваш ответ на вопрос