Вопрос:

Как объявить шаблонную структуру / класс своим другом?

c++ templates friend

22779 просмотра

1 ответ

45239 Репутация автора

Я хотел бы сделать следующее:

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    // ...
};

но мой компилятор (VC8) подавился этим:

error C3857: 'foo<T>': multiple template parameter lists are not allowed

Я хотел бы иметь все возможные экземпляры template struct fooдрузей foo<T>для всех T.

Как мне сделать эту работу?

РЕДАКТИРОВАТЬ: Это

template <typename T>
struct foo
{
    template <typename>
    friend struct foo;

private:
    // ...
};

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

Автор: Alexandre C. Источник Размещён: 20.07.2010 05:46

Ответы (1)


84 плюса

29896 Репутация автора

Решение
template<typename> friend class foo

это, однако, сделает все шаблоны друзьями друг другу. Но я думаю, это то, что вы хотите?

Автор: Anycorn Размещён: 20.07.2010 05:53
Вопросы из категории :
32x32