为什么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/