【发布时间】:2017-09-27 15:39:45
【问题描述】:
标准在哪里指定
std::hash<T>::operator()
不会抛出任何异常?
【问题讨论】:
标签: c++ exception hash language-lawyer
标准在哪里指定
std::hash<T>::operator()
不会抛出任何异常?
【问题讨论】:
标签: c++ exception hash language-lawyer
这在 [unord.hash]/4 中涵盖
满足表达式
h(k)(其中h是hash<Key>类型的对象,k是Key类型的对象)的要求,除非hash<Key>是用户,否则不应抛出异常- 定义的专业化,至少依赖于一种用户定义的类型。
因此,只要您使用fundamental types 提供的标准特化之一,operator() 就不会抛出。
【讨论】: