38
me gustaría hacer lo siguiente:Plantilla amigo
template <typename T>
struct foo
{
template <typename S>
friend struct foo<S>;
private:
// ...
};
pero mi compilador (VC8) se ahoga en él:
error C3857: 'foo<T>': multiple template parameter lists are not allowed
me gustaría tener todas las posibles instancias de template struct foo
amigos de foo<T>
para todos T
.
¿Cómo hago esto?
EDIT: Este
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.
gracias que funciona. Sí, es lo que quiero. –
¿puede por favor publicar la sección de referencia en el estándar donde está definido? –
En C++ 03 en 14.5.3.3 y 14.5.3.4, en C++ 11 necesita leer la sección Amigos en 14.5.4 –