c++ - tipo - ¿Cómo declarar una estructura/clase con plantilla como un amigo?
plantillas programacion orientada a objetos (1)
template<typename> friend class foo
sin embargo, esto hará que todas las plantillas se relacionen entre sí. Pero creo que esto es lo que quieres?
Me gustaría hacer lo siguiente:
template <typename T>
struct foo
{
template <typename S>
friend struct foo<S>;
private:
// ...
};
pero mi compilador (VC8) se ahoga:
error C3857: ''foo<T>'': multiple template parameter lists are not allowed
Me gustaría tener todas las instancias posibles de la template struct foo
friends de foo<T>
para todos los T
¿Cómo hago que esto funcione?
Edita esto
template <typename T>
struct foo
{
template <typename>
friend struct foo;
private:
// ...
};
parece compilar, pero ¿es correcto? Los amigos y las plantillas tienen una sintaxis muy poco natural.