Ich habe ein Problem mit Vorlage Vorlagen und Parameter Abzug. Hier ist der Code:Vorlage Vorlage Funktionen und Parameter Abzug
template<typename U, template<typename> class T>
void test(T<U>&& t)
{
...
}
Ich erwartete dies entweder lvalues und rvalues zu akzeptieren, aber nur mit rvalues. Die Kollabierungsregel "T & & & = T &" gilt in diesem Fall nicht?
Natürlich könnte ich auch die lvalue-Referenzfunktion deklarieren, macht aber den Code weniger lesbar.
Wenn Sie fragen, warum ich das brauche, ist eine static_assert zu verwenden, um zu überprüfen, ob T eine bestimmte Klasse ist. Wenn es einen einfacheren Weg gibt, werde ich gerne meinen Code ändern, aber ich würde gerne wissen, ob Template-Vorlagen auf diese Weise verwendbar sind.
Dank