#pragma once
#include <eh.h>
#ifdef _M_CEE_PURE
#include <vcruntime_new.h>
#endif
#pragma pack(push, _CRT_PACKING)
#if !defined RC_INVOKED && _HAS_EXCEPTIONS
_CRT_BEGIN_C_HEADER
__pragma
(pack(push,
8
))
extern
"C"
{
struct
{
char
const
*
;
bool
;
};
_VCRTIMP void __cdecl __std_exception_copy(
_In_ __std_exception_data const* _From,
_Out_ __std_exception_data* _To
);
_VCRTIMP void __cdecl __std_exception_destroy(
_Inout_ __std_exception_data* _Data
);
namespace
{
#pragma warning(push)
#pragma warning(disable: 4577) // 'noexcept' used with no exception handling mode specified
#pragma warning(disable:
4577
)
class
{
public
:
()
noexcept
: _Data()
{
}
explicit
(
char
const
*
const
)
noexcept
: _Data()
{
= {
,
true
};
(&
_InitData
, &
);
}
(
char
const
*
const
,
int
)
noexcept
: _Data()
{
.
=
;
}
(
const
&
)
noexcept
: _Data()
{
(&
.
, &
);
}
&
(
const
&
)
noexcept
{
if
(
this
== &
)
{
return
*
this
;
}
(&
);
(&
.
, &
);
return
*
this
;
}
virtual
()
noexcept
{
(&
);
}
virtual
char
const
*
()
const
{
return
.
?
.
:
"Unknown exception"
;
}
private
:
;
};
class
:
public
{
public
:
()
noexcept
:
(
"bad exception"
,
1
)
{
}
};
class
:
public
{
public
:
()
noexcept
:
(
"bad allocation"
,
1
)
{
}
private
:
friend
class
;
(
char
const
*
const
)
noexcept
:
(
,
1
)
{
}
};
class
:
public
{
public
:
()
noexcept
:
(
"bad array new length"
)
{
}
};
#pragma warning(pop)
}
#endif // !RC_INVOKED && _HAS_EXCEPTIONS
#pragma pack(pop)