在阅读template argument deduction for function规范时,我有些失落。
我正在寻找有关模式匹配如何工作的一些见解。 例如:
template <typename T>
void foo(T& t);
// **--------P (T&)
const int& a = ...;
foo(a);
// *----- A (const int&)
以下answer指出:
(i)如果A
是参考,则忽略参考部分
(ii)然后将A
与P
进行模式匹配,以确定T
。
但是它是如何完成和起作用的。 我指的是这个section:
如果 P 具有包含模板参数列表
或 的形式之一,则每个元素 Pi 与其 A 的相应模板参数 Ai 相匹配。如果最后一个 Pi 是一个包扩展,则将其模式与 A 模板参数列表中的每个剩余参数进行比较。
我完全不清楚...