关于模板参数演绎看似有缺陷的段落?

b1s*_*sub 3 c++ language-lawyer c++17

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

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

另一方面,标准有一个相互冲突的规则,如17.9.2,第2段[temp.deduct]显示(强调我的):

...具体而言,在针对给定函数模板评估显式指定的模板参数列表时,将执行以下步骤:

  • 如果指定的模板参数与实际的模板参数(即类型,非类型,模板)不匹配,或者参数多于参数且没有参数是模板参数包,或者没有参数每个非pack参数的参数,类型推导失败.
  • ...

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

Joh*_*nck 5

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