On Saturday, 13 February 2016 at 12:44:40 UTC, Tofu Ninja wrote:
Is the TypeInfo given by typeid() guaranteed to be the same for
a type regardless of where I call it? I guess my question is,
is the TypeInfo a valid way to dynamically check types?
I am implementing a message passing system for an
entity-component system, I was planning to use structs as
messages and use the TypeInfo to determine where they are
supposed to go. Will this cause any problems?
Also will typeid() allocate? Or is the TypeInfo statically
allocated at compile time?
Also how does shared libs affect this? Will a TypeInfo passed
across different libs still match up?
Thanks
Yes, type infos are garantueed to have identity. You can use
their adress to identify a type.
The linux shared library mechanism ensures that they have the
same adress across multiple shared libraries (if all of these
libraries are loaded into the same process)
With windows dlls there can be cases where a typeinfo is
duplicated. But as dlls don't really work yet, I wouldn't worry
about it.