Я бы хотел сделать следующее:
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:
// ...
};
, кажется, компилируется, но правильно ли это? Друзья и шаблоны имеют очень неестественный синтаксис.