【发布时间】:2019-06-26 12:09:23
【问题描述】:
以下引用来自[temp.expl.spec.11]:
尾随 template-argument 可以在 template-id 中未指定,命名提供的显式函数模板特化 it 可以从函数参数类型推导出来。
表示只能推导出单个尾随模板参数。这会使以下示例代码不正确:
template <typename T1, typename T2>
void f(T1, T2*);
template<>
void f(int, double*) { }
int main()
{
auto d = 2.0;
f(1, &d);
}
但是,使用 GCC 和 Clang 可以很好地编译代码。这些编译器是否应用了一些非标准的语言扩展,或者是否支持多个尾随参数的推导?
如果后者为真,为什么句子不形成如下?
尾随 template-arguments 可以在 template-id 中未指定,如果他们命名一个显式的函数模板特化strong> 可以从函数参数类型s推导出来。
【问题讨论】:
标签: c++ language-lawyer template-specialization template-argument-deduction function-templates