关于模板参数推理的看似有缺陷的段落?



省略模板参数是可能的,因为该标准在 17.9.1 第 3 段 [temp.arg.explicit] (N4700) 中说:

可以从默认模板参数s 中推导出或获取的尾随模板参数可以从显式模板参数列表中省略...

另一方面,该标准有一个相互冲突的规则,如17.9.2第2段[临时扣除]所示(强调我的):

。具体而言,在计算与给定函数模板相关的显式指定的模板参数列表时,将执行以下步骤:

如果指定的模板参数与实物模板参数(即类型、非类型、模板)不匹配,或者参数多于参数,并且没有参数
  • 是模板参数包,或者每个非包参数没有参数,则类型推断失败。

本段建议,如果我们要使用明确的模板参数列表,则应指定所有模板参数,这显然与上一段相矛盾。那么,意图是什么?

第二个引号适用于"在计算显式指定的模板参数列表时">,但第一个引号显然是关于未显式指定某些模板参数的情况。 没有冲突,因为他们谈论的是两种不同的情况。

最新更新