// /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/cc1plus -quiet -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=4 -D_GNU_SOURCE a.cpp -D__GNUG__=3 -quiet -dumpbase a.cpp -auxbase a -o - -frandom-seed=0 # 1 "a.cpp" # 1 "" # 1 "" # 1 "a.cpp" # 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/typeinfo" 1 3 # 38 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/typeinfo" 3 # 1 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/exception" 1 3 # 40 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/exception" 3 extern "C++" { namespace std { # 52 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/exception" 3 class exception { public: exception() throw() { } virtual ~exception() throw(); virtual const char* what() const throw(); }; class bad_exception : public exception { public: bad_exception() throw() { } virtual ~bad_exception() throw(); }; typedef void (*terminate_handler) (); typedef void (*unexpected_handler) (); terminate_handler set_terminate(terminate_handler) throw(); void terminate() __attribute__ ((__noreturn__)); unexpected_handler set_unexpected(unexpected_handler) throw(); void unexpected() __attribute__ ((__noreturn__)); # 100 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/exception" 3 bool uncaught_exception() throw(); } namespace __gnu_cxx { # 113 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/exception" 3 void __verbose_terminate_handler (); } } # 39 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/typeinfo" 2 3 extern "C++" { namespace __cxxabiv1 { class __class_type_info; } # 55 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/typeinfo" 3 namespace std { class type_info { public: virtual ~type_info(); private: type_info& operator=(const type_info&); type_info(const type_info&); protected: const char *__name; protected: explicit type_info(const char *__n): __name(__n) { } public: const char* name() const { return __name; } # 101 "/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.4/include/g++-v3/typeinfo" 3 bool before(const type_info& __arg) const { return __name < __arg.__name; } bool operator==(const type_info& __arg) const { return __name == __arg.__name; } bool operator!=(const type_info& __arg) const { return !operator==(__arg); } public: virtual bool __is_pointer_p() const; virtual bool __is_function_p() const; virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, unsigned __outer) const; virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, void **__obj_ptr) const; }; class bad_cast : public exception { public: bad_cast() throw() { } virtual ~bad_cast() throw(); }; class bad_typeid : public exception { public: bad_typeid () throw() { } virtual ~bad_typeid() throw(); }; } } # 2 "a.cpp" 2 using namespace std; class A { public: A (); virtual int a() = 0; }; int main(void) { A *B; typeid(typeid(*B)).name(); }