b1s*_*sub 3 c++ language-lawyer c++17
省略模板参数是可能的,因为标准在17.9.1第3段[temp.arg.explicit](N4700)中说:
可以从显式模板参数列表中省略可以从默认模板参数 s 推导或获得的尾随模板参数...
另一方面,标准有一个相互冲突的规则,如17.9.2,第2段[temp.deduct]显示(强调我的):
...具体而言,在针对给定函数模板评估显式指定的模板参数列表时,将执行以下步骤:
- 如果指定的模板参数与实际的模板参数(即类型,非类型,模板)不匹配,或者参数多于参数且没有参数是模板参数包,或者没有参数每个非pack参数的参数,类型推导失败.
- ...
本段建议如果我们使用显式模板参数列表,则应指定所有模板参数,这与上一段明显矛盾.那么,意图是什么?