Angenommen, ich habe eine Template-Funktion, die verschiedene Arten von Vektoren verwendet (aber aus verschiedenen Gründen kann ich das im Template-Parameter nicht erwähnen). Hier ist, was ich versuche zu tun: ein neues, standardmäßig konstruierte Element an einer bestimmten Stelle einzufügen, ohne seinen Typen zu wissen:std :: vector einfügen, ohne den Typ der Elemente zu kennen
template <typename T>
void foo(T* v) {
v->insert(v->begin() + 5, decltype(v->at(0))());
}
Das funktioniert nicht, sondern gibt Ihnen eine Vorstellung davon, was ich versuche, machen. Ich habe auch versucht, value_type
von std::vector
zu verwenden, aber ich lief dort auch Probleme. Irgendwelche Ideen, wie man dieses Problem löst?
Sie sollten einen Fehler erhalten, der das Problem hoffentlich beschreibt. Zum Beispiel sagt GCC, "Fehler: Wert-Initialisierung des Referenztyps" – Justin
'v.insert (v.begin() + 5, decltype (v) :: value_type());' –
@RichardCritten Das wird nicht funktionieren und es ist zu viel Arbeit; wir können bereits 'T' verwenden – Justin