�
try 3 From-SVN: r21439
This commit is contained in:
parent
282a221c4e
commit
32fcacb013
1 changed files with 71 additions and 0 deletions
71
gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
Normal file
71
gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
Normal file
|
@ -0,0 +1,71 @@
|
|||
// 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;
|
||||
}
|
Loading…
Add table
Reference in a new issue