Lors de la recherche d'une réponse à une question (sur la base this answer) J'ai essayé de faire ce qui suit:Pourquoi ne puis-je pas me lier d'amitié avec un paramètre de modèle?
template <class T>
class friendly {
friend class T;
};
friendly<string> howdy;
Cela ne peut pas compiler avec l'erreur suivante:
error: template parameter "T" may not be used in an elaborated type specifier friend class T;
D'après ce que je peux comprendre de mon bon ami Google c'est pour que je n'essaye pas accidentellement d'instancier friendly<int>
mais pourquoi cela devrait-il être une erreur lors de la compilation du template? Ce ne devrait pas être une erreur lors de l'instanciation du modèle avec un type invalide (comme si j'avais écrit int f() { return T::foo(); }
)
Comment faire des amis et influencer les paramètres. – TheTXI
Voici une question connexe: http://stackoverflow.com/questions/392120/why-cant-i-declare-a-friend-through-a-typedef –