Ho un problema con i modelli di modello e la deduzione dei parametri. Ecco il codice:Detrazione funzioni e parametri modello template
template<typename U, template<typename> class T>
void test(T<U>&& t)
{
...
}
Mi aspettavo questo per accettare lvalue e rvalues, ma funziona solo con rvalues. La regola del collasso "T & & = T &" non si applica in questo caso?
Naturalmente potrei dichiarare anche la funzione di riferimento di lvalue, ma rende il codice meno leggibile.
Se stai chiedendo perché ho bisogno di questo è quello di utilizzare un static_assert per verificare se T è una classe particolare. Se c'è un modo più semplice per farlo, sarò felice di cambiare il mio codice, ma mi piacerebbe sapere se i modelli di template sono utilizzabili in questo modo.
Grazie