Дружественный синтаксис для параметра шаблона Ptr-to-member

Итак, я считаю, что это чисто синтаксический вопрос С++.

У меня есть класс, определенный с помощью ptr-to-member в качестве одного из параметров шаблона:

template <class T, T *T::*hook> class My_list {

У меня есть еще один простой класс, который является другом этого класса. Обычно я писал:

class My_friend_class {
    template <class, class> friend class My_list;
};

... но, поскольку второй параметр шаблона не так уж свободен... как мне заявить о дружбе?

Спасибо!


person bcr    schedule 28.07.2011    source источник
comment
Таким же образом, template <class T, T * T::*>?   -  person Kerrek SB    schedule 29.07.2011
comment
Ух ты. Вы правы. Я думал, что пробовал это, но я попробовал template <class T, T *T::*hook> friend class My_list<T, hook>; . Оказывается, удаление последнего шаблона помогает. Спасибо!   -  person bcr    schedule 29.07.2011
comment
Хорошо, но будьте осторожны, есть разница между одним другом внутри шаблона и шаблонной семьей друзей... и даже в этом случае синтаксис шаблона-друга требует осторожности.   -  person Kerrek SB    schedule 29.07.2011


Ответы (1)


Может быть, лучше спросить: «Почему?» а не "Как?"

Чего именно вы пытаетесь достичь? Когда ваш код C++ становится сложным и уродливым, это часто является предупреждением о том, что вы неправильно подходите к проблеме.

person Michael J    schedule 01.10.2011