¿Por qué esta advertencia del compilador IBM XL C / C ++?

Aquí hay un ejemplo de código mínimo que ilustra el problema:

#include <iostream>

class Thing
{
   // Non-copyable
   Thing(const Thing&);
   Thing& operator=(const Thing&);

   int n_;

public:
   Thing(int n) : n_(n) {}

   int getValue() const { return n_;}
};

void show(const Thing& t)
{
   std::cout << t.getValue() << std::endl;
}

int main()
{
   show(3);
}

Esto produce el mismo error:

int main()
{
    show( Thing(3) );
}

El compilador IBM XL C / C ++ 8.0 bajo AIX emite estas advertencias:

"testWarning.cpp", line 24.9: 1540-0306 (W) The "private" copy constructor "Thing(const Thing &)" cannot be accessed.
"testWarning.cpp", line 24.9: 1540-0308 (I) The semantics specify that a temporary object must be constructed.
"testWarning.cpp", line 24.9: 1540-0309 (I) The temporary is not constructed, but the copy constructor must be accessible.

También probé g ++ 4.1.2 con "-Wall" y "-pedantic" y no obtuve ningún diagnóstico. ¿Por qué se requiere acceso al constructor de copia aquí? ¿Cómo puedo eliminar la advertencia, además de hacer que el objeto se pueda copiar (que está fuera de mi control) o hacer una copia explícita para pasar (cuando el objeto de la vida real es caro de copiar)?

Respuestas a la pregunta(4)

Su respuesta a la pregunta