Hi, Christian Bauer wrote:
2) The main reason behind the TINFO mechanism was to avoid a virtual function call. This and some other optimizations sped up GiNaC by a factor of two.
That's interesting information! Then of course, the proposed mechanism is no longer acceptable. But, "Never give up, never surrender" (Galaxy Quest), what about the folling code. There is no such overhead involved: class SOMECLASS { public: const static char* tinfo_name; unsigned tinfo; SOMECLASS() { tinfo = (unsigned)tinfo_name; } }; const char* SOMECLASS::tinfo_name= "SOMECLASS"; class daughter : public SOMECLASS { public: const static char* tinfo_name; daughter() { tinfo = (unsigned)tinfo_name; } }; const char* daughter::tinfo_name= "daughter"; Regards, Jens