Mi código es el siguienteno puede miembro privado de acceso declarado en un error al crear la instancia de clase de plantilla
template <typename T>
class name
{
public:
name() : h_(0){}
template <typename U>
operator name<U>()
{
name<U> u;
u.h_ = h_;
return u;
}
private:
int h_;
};
int main(void)
{
name<int> a;
name<double> b = a;
return 0;
}
El error que consigo es int name<double>::h_ is private
. ¿Cómo arreglar el error?
¿Qué 'plantilla plantilla nombre de un amigo Nombre :: operador ();', que debería funcionar (no he probado todavía), ¿verdad? –
@Prasoon sí que * debería * funcionar. Ver el enlace PR contra clang. Pero la redacción de la Norma para las declaraciones de amigos en las plantillas es, en mi opinión, muy lenta :) Por lo tanto, puedo ver por qué comeau se cuelga, se cuelga también para un ejemplo ligeramente modificado y GCC se niega a aceptarlo :) –