Cuando la investigación de una respuesta a una pregunta (basado en this answer) he tratado de hacer lo siguiente:¿Por qué no puedo hacer amistad con un parámetro de plantilla?
template <class T>
class friendly {
friend class T;
};
friendly<string> howdy;
Esta falla al compilar con el siguiente error:
error: template parameter "T" may not be used in an elaborated type specifier friend class T;
De lo que puedo entender desde mi buen amigo Google esto es para que no intente accidentalmente crear una instancia de friendly<int>
, pero ¿por qué debería ser un error al compilar la plantilla? No debería ser un error al crear una instancia de la plantilla con un tipo no válido (como lo escribí int f() { return T::foo(); }
)
Cómo hacer amigos e influir en los parámetros. – TheTXI
Aquí hay una pregunta relacionada: http://stackoverflow.com/questions/392120/why-cant-i-declare-a-friend-through-a-typedef –