模板推导中的偏序过程
模板推导中的偏序过程决定了两个函数模板之间的特化关系。它涉及两个阶段:
第 1 阶段:转换
对于每个模板,部分排序过程通过替换所有类型、非类型来创建“转换后的函数类型” ,以及具有独特、未使用类型的模板模板参数。
第 2 阶段:比较
转换后的函数类型以两种方式进行比较:
如果其中一个匹配成功而另一个匹配失败,则匹配成功的模板被认为更专业。如果两个匹配都不成功,则两个模板都不是更专业。
示例:
考虑以下两个函数模板:
template<typename T, typename U> void foo(T, U); // Template 1 template<typename T> void foo(T const*, X<T>); // Template 2
确定哪个模板更专业,我们:
1。创建转换后的函数类型:
2。比较转换后的函数类型:
结论:模板 2 比模板 1 更专业。
以上是偏序如何决定函数模板之间的专业化?的详细内容。更多信息请关注PHP中文网其他相关文章!