Объявление друга и явное объявление шаблона

Предположим, у меня есть шаблон функции

template <typename T>
void f(T) {}

Тогда мы могли бы иметь объявление друга

friend void f<int>(int);

и явное объявление экземпляра шаблона

extern template void f<int>(int);

Эти две декларации связаны каким-то образом или полностью независимы? Если связаны, как они взаимодействуют друг с другом?

0

Решение

friend Объявление не «взаимодействует» ни с чем, кроме определения функции, которая объявлена ​​другом, которой разрешен доступ к закрытым членам класса, содержащего объявление.

Так что нет, особого взаимодействия между friend декларация и extern template объявление, хотя они оба ссылаются на одну и ту же функцию (в этом смысле они связаны, но я предполагаю, что вы поняли это, когда написали вопрос).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector