73 lines
1.3 KiB
C
73 lines
1.3 KiB
C
// { dg-do run }
|
|
// 980617 bkoz
|
|
// typeid for local types
|
|
// typeid bool vs int and enum vs int
|
|
|
|
#include <typeinfo>
|
|
#ifdef DEBUG_ASSERT
|
|
#include <assert.h>
|
|
#endif
|
|
|
|
// 4: local class in non-main function
|
|
|
|
void test1 (void) {
|
|
bool class_p = false;
|
|
class X2 {
|
|
private:
|
|
unsigned int counter;
|
|
public:
|
|
X2 (unsigned int i = 35): counter(i) {}
|
|
~X2(){}
|
|
unsigned int ret_counter() {return counter;}
|
|
};
|
|
X2 obj_1;
|
|
class_p = typeid(X2) == typeid(obj_1);
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
// 1: simple
|
|
#if 1
|
|
bool enum_p = false;
|
|
enum E { A, B, C };
|
|
enum_p = typeid(A) == typeid(E);
|
|
#ifdef DEBUG_ASSERT
|
|
assert (enum_p);
|
|
#endif
|
|
#endif
|
|
|
|
// 2: complex
|
|
#if 0
|
|
bool enum2_p = false;
|
|
bool int_p = false;
|
|
bool bool_p = false;
|
|
enum E2 { A2, B2};
|
|
enum2_p = typeid(A2) == typeid(E2);
|
|
int_p = typeid(int) == typeid(E2);
|
|
bool_p = typeid(bool) == typeid(E2);
|
|
#ifdef DEBUG_ASSERT
|
|
assert (enum2_p);
|
|
assert (!int_p);
|
|
assert (!bool_p);
|
|
#endif
|
|
#endif
|
|
|
|
// 3: local class
|
|
bool class_p = false;
|
|
class X {
|
|
private:
|
|
unsigned int counter;
|
|
public:
|
|
X (unsigned int i = 35): counter(i) {}
|
|
~X(){}
|
|
unsigned int ret_counter() {return counter;}
|
|
};
|
|
X obj_1;
|
|
class_p = typeid(X) == typeid(obj_1);
|
|
|
|
// 4: local class in function
|
|
test1();
|
|
|
|
return 0;
|
|
}
|