Я наткнулся на этот вопрос, у которого был ответ, который использовал нечетную конструкцию:
typedef std::queue<int> Q;
typedef Q::container_type C;
C & get (Q &q)
{
struct hack : private Q {
static C & get (Q &q) {
return q.*&hack::c;
}
};
return hack::get(q);
}
Я обычно следую за тем, что q
имеет доступ к своему собственному элементу c
, на который ссылается функция get
. Но я затрудняюсь это объяснить. Что происходит именно с .*&
, и почему это разрешено?