Typfrage
-
Warum funktioniert das nicht:
#include <list> std::list<int> fn() { return std::list(2, 2); } int main() { std::list<int> l; l.splice(l.begin(), fn()); }..aber das schon?
std::list<int> l, l2; l.splice(l.begin(), l2); }(list::splice verschiebt alle Elemente von l2 nach l1, aber darum geht es nicht).
Beispiel 1 verursacht einen Typfehler (no call to splice with...), wie unterscheiden sich also die Typen der Parameter in beiden Aufrufen?
-Gunnar
-
Die Methode splice() erwartet als zweiten Paramter eineReferenz. => Deine erste Version kann nicht funktionieren, da du keine Referenzen an temporäre Objekte binden kannst (was du aber durch den Funktionsaufruf fn() versuchst, da dieser ein temporäres Objekt zurückgibt).
/edit: Verlesen und verschrieben...
Gruß Caipi
-
Danke. Da wurde ich mal wieder durch wirre Template-Fehlermeldungen vom Compiler verwirrt

-Gunnar