不同计算机上的 typeid 是否相同?

5
我想知道在不同的计算机上,typeidhash_code()是否相同?例如:typeid(int).hash_code()在另一台计算机上是否相同?

1
这方面完全没有任何保证。在同一二进制文件的两次连续运行中,它们甚至不必在同一台计算机上相同。一个非常明显的实现方式是对指针地址进行哈希处理。 - Konrad Rudolph
2个回答

10
我想知道在不同的计算机上,typeidhash_code()是否相同?
可能相同,也可能不同。根据cppreference所述,其行为是:
返回一个未指定值,对于所有引用相同类型的type_info对象,它们的hash_code()都是相同的。
没有给出其他保证:引用不同类型的type_info对象可以具有相同的hash_code(尽管标准建议实现尽可能避免这种情况),并且同一类型的hash_code()可能会在同一程序的不同调用之间发生变化。

1

来自cppreference:

同一类型的hash_code可能会在同一程序的不同调用之间发生变化

(引用自此处)。
因此,它不仅不能保证在不同的计算机上相同,甚至不能保证每次对同一程序都是相同的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接