#include <iostream>
class exception
{
const char * m_what;
public:
exception() throw()
:
m_what("X")
{
}
exception(const exception& arg) throw()
:
m_what("copy of X")
{
}
virtual const char * what() const throw()
{
return m_what;
}
};
int main()
{
using ::exception; // Similar to std::exception.
try
{
throw exception(); // May do copy elision.
}
catch (const exception& e)
{
std::cout << e.what(); // "X" or "copy of X"???
}
}