tengo un problema con auto_ptr en las clases de excepción, que con el tiempo he reducido a:Por qué no puedo tener un auto_ptr en una clase de excepción
#include <memory>
class MyException
{
std::auto_ptr<int> m_foo2;
};
int main()
{
try
{
throw MyException();
}
catch (const MyException&)
{
}
return 0;
}
Esta falla al compilar con:
/perforce/unstable/test/Common/Exceptions/TestException4.cpp: In function 'int main()': /perforce/unstable/test/Common/Exceptions/TestException4.cpp:12: error: no matching function for call to 'MyException::MyException(MyException)' /perforce/unstable/test/Common/Exceptions/TestException4.cpp:4: note: candidates are: MyException::MyException() /perforce/unstable/test/Common/Exceptions/TestException4.cpp:4: note: MyException::MyException(MyException&) /perforce/unstable/test/Common/Exceptions/TestException4.cpp:12: error: in thrown expression
Y el error desaparece si elimino el auto_ptr.
¿Esto se debe a que se está copiando o asignando la excepción? ¿Hay alguna manera de usar auto_ptr
s en una excepción?
Guau, respuestas de alta calidad aquí. Debe ser una buena pregunta. :) – sje397