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?)