uniwersalne odniesienie vs stały priorytet odniesienia?

Kiedy rozważam dwa następujące przeciążenia:

template <class... T> void f(const T&... x);
template <class T> void f(const T& x);

Mam taką gwarancjęf(x) zawsze wywoła drugą funkcję i nigdy nie doprowadzi do niejasności. W pewnym sensie druga wersja jest traktowana priorytetowo w porównaniu z pierwszą dla jednego argumentu, niezależnie od jego typu.

Rozważ teraz sytuację, w której istnieje uniwersalne odniesienie i stałe wersje referencyjne funkcji:

template <class T> void f(T&& x);
template <class T> void f(const T& x);

Moje pytanie brzmi: czy jest to uniwersalny priorytet między tymi dwiema funkcjami, niezależnie od typu x (odniesienie do wartości r, odniesienie, kwalifikatory cv, wskaźnik ...) jak w poprzednim przypadku? (a jeśli tak, jaki jest priorytet?)

questionAnswers(1)

yourAnswerToTheQuestion