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