универсальная ссылка против приоритетной ссылки const?
Когда я рассматриваю две следующие перегрузки:
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, указатель ...), как в предыдущем случае? (и если да, то какой приоритет?)