Grundsätzlich, wenn ich eine Variable T value
habe, und eine Funktion T func(const T &)
, die eine T
in eine andere verwandelt, kann ich new (&value) T(func(value))
tun? Ich bin mir nicht sicher, ob das Umschreiben desselben Ortes Probleme verursachen kann. Kann die alte value
überschrieben werden, bevor func(value)
endet?C++ in-place Platzierung neu
UPDATE: Ich tue dies, um zu versuchen, eine Tail-Rekursion in eine Schleife zu verwandeln (Compiler können es wegen nicht-trivialem Destruktor nicht optimieren). Methoden besser als Placement neu sind mehr als willkommen!
Warum nicht einfach 'value = func (value);'? – Jarod42
@ Jarod42 'T' möglicherweise nicht kopieren (oder verschieben) zuweisbar. –
So versuchen Sie, T-Schnittstelle zu umgehen:/... Beachten Sie auch, dass Sie vergessen, "Wert" Destruktor mit Ihrem Placement neu zu nennen. – Jarod42