Je voudrais faire ce qui suit:
template <typename T>
struct foo
{
template <typename S>
friend struct foo<S>;
private:
// ...
};
mais mon compilateur (VC8) s'étouffe dessus:
error C3857: 'foo<T>': multiple template parameter lists are not allowed
J'aimerais avoir toutes les instanciations possibles de template struct foo
les amis de foo<T>
pour tous T
.
Comment faire pour que ça marche?
EDIT: Ce
template <typename T>
struct foo
{
template <typename>
friend struct foo;
private:
// ...
};
semble compiler, mais est-ce correct? Les amis et les modèles ont une syntaxe très peu naturelle.
template<typename> friend class foo
cela rendra cependant tous les modèles amis entre eux. Mais je pense que c'est ce que tu veux?