Comment déclarer une structure / classe basée sur un modèle en tant qu’ami?

J’aimerais faire ce qui suit:

template  struct foo { template  friend struct foo; private: // ... }; 

mais mon compilateur (VC8) l’étouffe:

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

Je voudrais avoir toutes les instanciations possibles du template struct foo friends de foo pour tout T

Comment puis-je faire ce travail?

EDIT: Ceci

 template  struct foo { template  friend struct foo; private: // ... }; 

semble comstackr, mais est-ce correct? Les amis et les modèles ont une syntaxe peu naturelle.

 template friend class foo 

Cela rendra cependant tous les modèles amis les uns aux autres. Mais je pense que c’est ce que tu veux?