当我考虑以下两个重载时:
template <class... T> void f(const T&... x);
template <class T> void f(const T& x);
我保证f(x)
将始终调用第二个函数并且永远不会导致歧义。从某种意义上说,对于一个论点,无论其类型是什么,第二个版本都比第一个版本普遍优先。
现在考虑一个函数有一个通用引用和一个常量引用版本的情况:
template <class T> void f(T&& x);
template <class T> void f(const T& x);
我的问题是:无论 x 的类型(r 值引用、引用、cv-qualifiers、指针...)如何,它们是否是这两个函数之间的普遍优先级,就像前一种情况一样?(如果是,优先级是什么?)