为什么C++标准没有指定std::hash<T>专用于char*const char*unsigned char*const unsigned char*等?也就是说,它将对C字符串的内容进行哈希处理,直到找到终止的null。

将自己的专长注入(inject)我自己的代码的std命名空间有什么害处?

最佳答案



看起来它起源于proposal N1456。 (强调我的)



如果我正确地解释了这一点,则理由是支持C样式字符串将破坏通常作用于指针哈希的代码。



有潜在的危害,是的。

  • 将来,添加到std命名空间的任何内容都可能与新的符号名称发生冲突。
  • 当前,添加到std命名空间中的任何内容都可能与标准库的其他组件“更好地匹配”,从而悄无声息地破坏了行为。
  • 关于c++ - 为什么std::hash <T>不专门用于char *?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16044551/

    10-11 22:38
    查看更多