【发布时间】:2013-08-16 02:20:59
【问题描述】:
当我考虑以下两个重载时:
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 限定符、指针...)如何,它们在这两个函数之间是否具有普遍的优先级,就像前一种情况一样? (如果是,优先级是什么?)
【问题讨论】:
-
我认为是this talk 包含了这个。
标签: c++ templates c++11 reference universal-reference