一篇SO的帖子称扩展std
是UB(当然,除非你是标准的编写者)。但是,std
有时会被成功扩展。什么时候可以这样做呢?
std
命名空间中。但是,仅当它们依赖于用户定义的类型时才可以这样做。
[namespace.std](标准草案):std::hash
和std::iterator_traits
。std
中的那些函数”的列表,但这已经足够好了。 - green diodstd
命名空间添加新函数是不可以的。请参见标准引用 [namespace.std]/1。 - eerorika您可以为自定义数据类型添加模板特化。
例如:为std::unordered_map
添加您自己的std::hash
特化实现。
std::numeric_limits<my_own_number_type>
。 - Walterstd
且期望它的那部分 很准确。 - green diod