Почему я не могу использовать auto _ptr в классе Exception

У меня проблема с auto _ptr в классах Exception, которую я в итоге сократил до:

#include <memory>

class MyException
{
    std::auto_ptr<int> m_foo2;
};

int main()
{
    try
    {
        throw MyException();
    }
    catch (const MyException&)
    {

    }
    return 0;
}

Это не скомпилируется с:

/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

И ошибка исчезнет, ​​если я уберу auto _ptr.

Это потому, что исключение копируется или назначается? Есть ли способ использовать auto_ptrв исключении?

7
задан Douglas Leeder 5 April 2012 в 10:32
поделиться