Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
STD_BAD_CAST.cpp
Go to the documentation of this file.
1// checking for class std::bad_cast
2
3
25#include "config.h"
26
27
28#ifndef _RWSTD_NO_HONOR_STD
29# ifdef _RWSTD_NO_STD_TERMINATE
30# include "terminate.h"
31# endif // _RWSTD_NO_STD_TERMINATE
32#endif // _RWSTD_NO_HONOR_STD
33
34
35// will fail if namespaces aren't supported
36namespace std {
37
38class bad_cast { };
39
40}
41
42// force a failure if namespace std isn't honored
43enum bad_cast { };
44
45
46struct B { virtual ~B () { } };
47struct D1: B { };
48struct D2: B { };
49
50int main ()
51{
52 D1 d1;
53 B &b = d1;
54
55 try {
56 // throws [std::] bad_cast
57 D2 &d2 = dynamic_cast<D2&>(b);
58 }
59 catch (std::bad_cast&) {
60 return 0;
61 }
62 catch (...) {
63 // fail if cast throws anything other than a std::bad_cast
64 return 1;
65 }
66
67 // fail if cast doesn't throw
68 return 2;
69}
#define d1
Definition 17.names.cpp:228
#define b
Definition 17.names.cpp:110
#define d2
Definition 17.names.cpp:254
int main()
Definition json.h:5363
virtual ~B()